2014年3月14日金曜日

開発環境

Head First JavaScript ―頭とからだで覚えるJavaScriptの基本( Michael Morrison (著), 豊福 剛 (翻訳)、オライリージャパン)の10章(カスタムオブジェクトを作成する)、自分で考えてみよう(p.473)をDartで考えてみる。

その他参考書籍

自分で考えてみよう(p.473)

コード

sample.dart

import 'dart:html';

void main () {
  run.onClick.listen((MouseEvent event) => Blog.showBlog());
  clear.onClick.listen((MouseEvent event) => div.innerHtml = '');
}

ButtonElement run = querySelector('#run_dart');
ButtonElement clear = querySelector('#clear');
DivElement div = querySelector('#d0');

List<Blog> blog = [new Blog(new DateTime(2008, 8, 14), '注文していた…'),
                   new Blog(new DateTime(2008, 8, 19), '新しいキューブは…'),
                   new Blog(new DateTime(2008, 8, 16), '新しいキューブと…'),
                   new Blog(new DateTime(2008, 8, 21), 'ネットで…'),
                   new Blog()];

String shortFormat(DateTime dt){
  return '${dt.month}/${dt.day}/${dt.year}';
}

class Blog implements Comparable{
  static const SIGNATURE = 'This blog created by Puzzler Ruby';
  static void showBlog([int n]) {
      var blog_html = '';
      if (n == null){
        n = blog.length;
      }
      blog.sort((x, y) => x.compareTo(y));
      bool highlight = true;
      blog.forEach((Blog entry){
        div.append(entry.toHtml(highlight));
        highlight = !highlight;
      });
  }
  DateTime date_time;
  String body;
  Blog([DateTime date_time, String body]){
    this.date_time = date_time != null ? date_time : new DateTime.now();
    this.body = body != null ? body : 'Nothing going on today';
  }
  ParagraphElement toHtml(bool highlight){
    ParagraphElement p = new ParagraphElement();
    if (highlight) {
      p.style.backgroundColor = '#EEEEEE';
    }
     p.innerHtml = '<strong>${shortFormat(date_time)}</strong><br />' +
         '$body<br />$SIGNATURE</em>';
     return p;
  }
  int compareTo(Blog other) => other.date_time.compareTo(date_time);
}

0 コメント:

コメントを投稿