Skip to content

Instantly share code, notes, and snippets.

@eienf
Created August 4, 2017 12:18
Show Gist options
  • Save eienf/ca00d20a033360dcb20662c8842411b7 to your computer and use it in GitHub Desktop.
Save eienf/ca00d20a033360dcb20662c8842411b7 to your computer and use it in GitHub Desktop.
//
// main.swift
// half2full
//
// Created by eien.support@gmail.com on 2017/08/02.
// Copyright © 2017年 Eien Factory. All rights reserved.
//
import Foundation
func fileHandle(path:String) -> NSFileHandle? {
let url = NSURL(fileURLWithPath: path)
return NSFileHandle(forReadingAtPath: url.path!)
}
let args = Process.arguments
var inputHandle: NSFileHandle?
var toFull = true
for i in 1..<args.count {
let arg = args[i]
if arg == "-r" {
toFull = false
continue
}
if arg.hasPrefix("-") {
continue
}
if arg.hasPrefix("+") {
continue
}
inputHandle = fileHandle(arg)
if inputHandle != nil {
break
}
}
let standardInput = inputHandle ?? NSFileHandle.fileHandleWithStandardInput()
let standardOut = NSFileHandle.fileHandleWithStandardOutput()
while true {
let input = standardInput.availableData
if input.length == 0 { break }
let dataString = NSString(data:input, encoding:NSUTF8StringEncoding)
let str = dataString?.mutableCopy() as! NSMutableString
CFStringTransform(str, nil, kCFStringTransformFullwidthHalfwidth, toFull)
if let out = str.dataUsingEncoding(NSUTF8StringEncoding) {
standardOut.writeData(out)
}
}
standardOut.writeData(NSString(string: "\n").dataUsingEncoding(NSUTF8StringEncoding)!)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment