Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View NikolaiRuhe's full-sized avatar

Nikolai Ruhe NikolaiRuhe

View GitHub Profile
@NikolaiRuhe
NikolaiRuhe / gist:5546537
Last active December 17, 2015 03:49
Simple demo code illustrating the advantages of enumerateSubstringsInRange over componentsSeparatedByString.
//
// Created by Nikolai Ruhe on 2013-05-09.
// Copyright (c) 2013 Savoy Software. All rights reserved.
//
#import <Foundation/Foundation.h>
static NSString *replaceLongWords(NSString *originalString, NSString *replaceWord, NSUInteger maxChar)
{
NSMutableString *result = [NSMutableString stringWithCapacity:[originalString length]];
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.openpromos.com/OPPC/XMLForms" xmlns:oppc="http://www.openpromos.com/OPPC/XMLForms" id="1820FE15-11C0-2215-4852-8595648916A6" originalId="516C5610-2CE6-0AF0-E100-8000C0A880BF">
<head>
<originalId>516C5610-2CE6-0AF0-E100-8000C0A880BF</originalId>
</head>
<actions>
<action id="$BS_FORMTAKE" includeInMenu="true" title="Übernehmen">
<type>
<server command="$BS_FORMTAKE"/>
</type>
@NikolaiRuhe
NikolaiRuhe / NRDelegateProxy
Created September 23, 2014 10:16
NRDelegateProxy is an Objective-C proxy class used for intercepting delegate callbacks.
// NRDelegateProxy is a base class for proxy objects that are used as intercepting
// delegates in other objects.
//
// NRDelegateProxy is subclassed to customize delegate behavior by selectively responding
// to some delegate methods while passing on other methods. It can thus be used to implement
// a chain of delegates where each delegate is responsible for some specific task.
//
// Below is an example using a UITextField. It sets up a chain of delegates that looks as follows:
//
// UITextField -> NRTextFilterProxy -> NRKeyboardHiderProxy -> ViewController
<?xml version="1.0" encoding="utf-8"?>
<form id="template000007" originalId="tempalte000007" xsi:schemaLocation="http://www.openpromos.com/OPPC/XMLForms FormSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:meta="http://www.openpromos.com/OPPC/XMLFormsMetaData" xmlns="http://www.openpromos.com/OPPC/XMLForms">
<head>
<servertag xmlns:meta="http://www.openpromos.com/OPPC/XMLFormsMetaData" xmlns:oppc="http://www.openpromos.com/OPPC/XMLForms">
<logo id="TGSLOGO3"/>
</servertag>
</head>
<sheet title="Protokoll zur Technischen Trocknung">
<section>
<checkboxfield title="Protokoll zur Technischen Trocknung ausfüllen" refname="PROTTROCK" visibility="screen"/>
<sheet id="main_sheet" meta:month_id="201504" meta:refname="main_sheet">
<section visibility="hidden" meta:timesec.expression="self">
<datefield meta:time="0">1983-11-22T23:00:00Z</datefield>
<datefield meta:time="0.25">1983-11-22T23:15:00Z</datefield>
<datefield meta:time="0.5">1983-11-22T23:30:00Z</datefield>
<datefield meta:time="0.75">1983-11-22T23:45:00Z</datefield>
<datefield meta:time="1">1983-11-23T00:00:00Z</datefield>
<datefield meta:time="1.25">1983-11-23T00:15:00Z</datefield>
<datefield meta:time="1.5">1983-11-23T00:30:00Z</datefield>
<datefield meta:time="1.75">1983-11-23T00:45:00Z</datefield>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="format-detection" content="telephone=no">
<title>Impressum</title>
<style type="text/css">
p { margin: 0.0px 0.0px 15.0px 0.0px; font: 12.0pt Helvetica; }
</style>
extension CBUUID {
func representativeString() -> String {
let data = self.data
let buffer = UnsafeBufferPointer<UInt8>(start: UnsafePointer(data.bytes), count: data.length)
let hex: (UInt8) -> String = { ($0 <= 9 ? "0" : "") + String($0, radix: 16, uppercase: true) }
let dashInserter: (Int) -> String = { [3, 5, 7, 9].contains($0) ? "-" : "" }
return buffer.map(hex)
.enumerate()
@NikolaiRuhe
NikolaiRuhe / NRLabel
Created July 15, 2016 06:50
A UILabel subclass that adds padding around the text and handles layout properly.
import UIKit
class NRLabel : UILabel {
var textInsets: UIEdgeInsets = UIEdgeInsetsZero
override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
let insetRect = UIEdgeInsetsInsetRect(bounds, textInsets)
let textRect = super.textRect(forBounds: insetRect, limitedToNumberOfLines: numberOfLines)
let invertedInsets = UIEdgeInsets(top: -textInsets.top,
@NikolaiRuhe
NikolaiRuhe / NRLabel.m
Last active November 27, 2018 07:38
A UILabel subclass that adds padding around the text and handles layout properly.
@interface NRLabel : UILabel
@property (nonatomic) UIEdgeInsets textInsets;
@end
@implementation NRLabel
- (void)setTextInsets:(UIEdgeInsets)textInsets
{
_textInsets = textInsets;
[self invalidateIntrinsicContentSize];
@NikolaiRuhe
NikolaiRuhe / NRLabel.swift
Last active April 9, 2020 05:01
A UILabel subclass that adds padding around the text and handles layout properly.
import UIKit
class NRLabel : UILabel {
var textInsets = UIEdgeInsets.zero {
didSet { invalidateIntrinsicContentSize() }
}
override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
let insetRect = UIEdgeInsetsInsetRect(bounds, textInsets)