2013年12月2日月曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の14章(ファイル入出力)、14.1(ファイル関数)、14.2(変換ルーチン)、14.3(バイナリファイルとASCIIファイル)、14.4(行終端にまつわる謎)、14.5(バイナリI/O)、14.6(バッファリングの問題)、14.7(バッファリングを行わないI/O)、14.8(ファイル形式の設計)、14.10(プログラミング実習)、実習 14-2をDartで解いてみる。

その他参考書籍

実習 14-2.

コード

sample.dart

import 'dart:html';

void main(){
  InputElement input = querySelector('#f0');
  InputElement spaces = querySelector('#t1');
  InputElement run = querySelector('#run_dart');
  InputElement clear = querySelector('#clear');
  Element div = querySelector('#d0');
  TextAreaElement textarea = new TextAreaElement();
  input.accept = 'text/*';
  spaces.value = '4';
  spaces.size = 2;
  textarea.readOnly = true;
  textarea.style.width = '650px';
  textarea.style.overflow = 'auto';
  textarea.style.wordWrap = 'normal';
  var reader = new FileReader();
  run.onClick.listen((MouseEvent event){
    String result = window.navigator.userAgent + '\n';
    try{
      File file = input.files.first;
      reader.readAsText(file);
      reader.onLoad.listen((Event event){
        String contents = reader.result;
        textarea.rows = contents.split('\n').length;
        int n = int.parse(spaces.value);
        String result = contents.replaceAll('\t',
            new List.filled(n, ' ').join());
        textarea.text = result;
        textarea.select();
      });
    } catch (e){
      result += '$e';
      textarea.rows = result.split('\n').length;
      textarea.text = result;
    } finally {
      div.append(textarea);
    }
  });
  textarea.onClick.listen((MouseEvent event){
    textarea.select();
  });
  clear.onClick.listen((MouseEvent event) => div.text = '');
}

0 コメント:

コメントを投稿