2013年12月22日日曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅢ部(高度なプログラミング概念)の18章(モジュールプログラミング)、18-14(プログラミング実習)、実習18-1.をDartで解いてみる。

その他参考書籍

18-14(プログラミング実習)、実習18-1.

コード

sample45library.dart

library sample45library;

String defineHeader(String heading){
  return '見出し: $heading\n';
}
Map f(int n, String s){
  var result = '';
  var lineno = n;
  var lines = s.split('\n');
  var rows = lines.length;
  var cols = lines.fold(0,
      (int prev, var elem) => elem.length > prev ? elem.length : prev);
  for(var line in lines){
    if(n == 11){
      result += '$lineno: \f$line\n';
      n = 1;
    } else {
      result += '$lineno: $line\n';
    }
    n += 1;
    lineno += 1;
  }
  return {'rows': rows, 'cols': cols, 'result':result};
}

コード

sample.dart

import 'dart:html';
import 'sample45library.dart' as lib;

void main(){
  InputElement input = querySelector('#f0');
  InputElement run = querySelector('#run_dart');
  InputElement clear = querySelector('#clear');
  Element div = querySelector('#d0');
  TextAreaElement textarea = new TextAreaElement();
  textarea.readOnly = true;
  textarea.style.width = '650px';
  textarea.style.overflow = 'auto';
  textarea.style.wordWrap = 'normal';
  run.onClick.listen((MouseEvent event){
    div.innerHtml = window.navigator.userAgent + '<br />';
    textarea.text = '1: ' + lib.defineHeader('出力');
    textarea.rows = 1;
    try{
      var file = input.files.first;
      var reader = new FileReader();
      reader.readAsText(file);
      reader.onLoad.listen((Event event){
        String contents = reader.result;
        var result = lib.f(2, contents);
        textarea.rows += result['rows'];
        textarea.text += result['result'];
        div.append(textarea);
      });
    }catch(e){
      div.innerHtml += e.toString();
    }
  });
  clear.onClick.listen((MouseEvent event) => div.innerHtml = '');
  textarea.onClick.listen((MouseEvent event) => textarea.select());
}

0 コメント:

コメントを投稿