Skip to content

Instantly share code, notes, and snippets.

@eienf
eienf / erayears.swift
Created May 6, 2021 13:43
print all years in specified era, era number = 1 is Taika, era number = 235 is Heisei
import Foundation
let japanese = Calendar(identifier: .japanese)
let gregorian = Calendar(identifier: .gregorian)
let locale = Locale(identifier: "ja")
let format = DateFormatter()
format.calendar = japanese
format.dateFormat = "Gy年"
format.locale = locale
@eienf
eienf / jera.swift
Created May 6, 2021 13:40
print first year of the era include specified year
import Foundation
let japanease = Calendar(identifier: .japanese)
let gregorian = Calendar(identifier: .gregorian)
let locale = Locale(identifier: "ja")
let format = DateFormatter()
format.calendar = japanease
format.dateFormat = "Gy年"
format.locale = locale
@eienf
eienf / jyear.swift
Created May 3, 2021 09:48
print gregorian calendar year with japanease calendar year
import Foundation
//
// print gregorian calendar year with japanease calendar year
// siwftc -o jyear jyear.swift
// ./jyear startYearInGregorianCalendar // (-length 10)
// ./jyear startYearInGregorianCalendar -length years
// ./jyear startYearInGregorianCalendar stopYearInGregorianCalendar
//
let japanease = Calendar(identifier: .japanese)
let gregorian = Calendar(identifier: .gregorian)
@eienf
eienf / is_num.pl
Last active January 8, 2018 12:03
Check whether the variable is integer. Perl
#!/usr/bin/perl
#
sub is_num {
my ($val) = @_;
if ( $val =~ /^-?\d+$/ ) {
return 1;
}
return 0;
}
sub test_is_num {
@eienf
eienf / StreamReader.swift
Created January 7, 2018 13:44
Read large text file line by line. Swift 2 version.
import Foundation
class StreamReader {
let encoding: NSStringEncoding
let chunkSize: Int
let fileHandle: NSFileHandle
var buffer: NSMutableData
let delimPattern : NSData
var isAtEOF: Bool = false
import Foundation
extension String {
var hankanaRange : NSRange {
get {
return String.rangeOfHankana(self)
}
}
var stringWithoutHankana : String {
get {
//
// Use with String+Hankana.swift
// half2full
//
// half2full textfile.utf8 // all Half -> Full
// half2full -r textfile.utf8 // all Full -> Half
// half2full -k textfile.utf8 // only Half Kana -> Full Kana
//
import Foundation
extension String {
func rangeFromNSRange(nsrange:NSRange) -> Range<String.Index> {
let string = self
let startIndex = string.startIndex.advancedBy(nsrange.location)
let endIndex = startIndex.advancedBy(nsrange.length)
let range = Range(start:startIndex, end:endIndex)
return range
}
func NSRangeFromRange(range:Range<String.Index>) -> NSRange {
let location = self.startIndex.distanceTo(range.startIndex)
//
// main.swift
// half2full
//
// Created by eien.support@gmail.com on 2017/08/02.
// Copyright © 2017年 Eien Factory. All rights reserved.
//
import Foundation
@eienf
eienf / JulianDayUtilities.swift
Created March 21, 2017 12:19
Julian Day Conversion Utility Functions
import Foundation
func jdFromDate(date : NSDate) -> Double {
let JD_JAN_1_1970_0000GMT = 2440587.5
return JD_JAN_1_1970_0000GMT + date.timeIntervalSince1970 / 86400
}
func dateFromJd(jd : Double) -> NSDate {
let JD_JAN_1_1970_0000GMT = 2440587.5
return NSDate(timeIntervalSince1970: (jd - JD_JAN_1_1970_0000GMT) * 86400)