image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2007年7月10日 | トップページ | 2007年7月12日 »

2007年7月11日

2007-07-11

xfy/xvcd の言語リソース編集ツールが欲しい (その3.5)

昨日の xfy/xvcd の言語リソース編集ツールが欲しい (その3) では、
Hash が追加順序を保持していないので、ちょっと不自然なコードで回避していた。
web でしらべたら OrederdHash という Hash で順番を保持させる例が見つかった。
明日はこれを使って xfy/xvcd のリソースファイル変換の ruby スクリプトを書き直そう。
今日はとりあえず, OrderdHash のコードだけを示す。

$ cat orderdhash.rb
# See - http://rubyist.g.hatena.ne.jp/onishi/comment?date=20060519
#     - http://blog.kks-online.net/archives/2006/06/ruby_1.html

require 'pp'

require 'test/unit'

class OrderedHashTest < Test::Unit::TestCase
  def test_ordered_hash
    oh = OrderedHash.new
    doTest(oh)
  end

  def test_ordered_hashX
    oh = OrderedHashX.new
    doTest(oh)
  end

  def doTest(oh)
    oh["one"] = 1
    oh["two"] = 2
    oh["three"] = 3
    oh["two"] = 4

    assert_equal oh.keys, ["one", "two", "three"]
    assert_equal oh.values, [1, 4, 3]

    ks = []
    vs = []
    oh.each {|k, v|
      ks << k
      vs << v
    }
    assert_equal ks, oh.keys
    assert_equal vs, oh.values

  end
end

class OrderedHash < Hash
  def initialize
    @keyodrer = []
    super
  end

  def keys
    @keyodrer
  end

  def values
    # @keyodrer.collect{|k| self[k]}
    self.values_at(*@keyodrer)
  end

  def []=(_key, _value)
    @keyodrer << _key unless @keyodrer.include?(_key)
    super(_key, _value)
  end

  def delete(_key)
    @keyodrer.delete(_key)
    super(_key)
  end

  def each
    @keyodrer.each{|k|
      yield(k, self[k])
    }
  end
end

class OrderedHashX
  def initialize()
    @keys = []
    @content = {}
  end

  def [](key)
    @content[key]
  end

  def []=(key, value)
    @keys << key unless @keys.include?(key)
    @content[key] = value
  end

  def delete(key)
    @keys.delete(key)
    @content.delete(key)
  end

  def keys()
   @keys
  end

  def values
    @content.values_at(*@keys)
  end

  def each()
    @keys.each{|key|
      yield(key, @content[key])
    }
  end

end

今回は each メソッドの定義の仕方を学ぶことができた。
( pp での動作を定義するにはどうしたらいいんだろう...)

ピックアップ:Google File System(GFS)技術メモ, ページビューは死んだ!がついに現実に, etc...

- http://www.liris.org/blog/javaE381AFE38284E381A3E381B1E3828AE99BA3E38197E38184/
> > Javaはやっぱり難しい - Emerge Technology

- http://son-son.sakura.ne.jp/programming/ruby_rubyoffice.html
> > sonson@Picture&Software: RubyでOfficeを操る

- http://d.hatena.ne.jp/nori090/20070709/1183992053
> > The Other Road Ahead - yourfilehost movie download

- http://www.13hz.jp/2007/07/post_0105.html
> > 13Hz!: マッシュアップの本当の威力

- http://blog.masuidrive.jp/index.php/2007/05/06/network-facade/
> > masuidrive on rails » Blog Archive » [紹介] HTTPでdRubyと同じようにリモートメソッドを呼び出すNetworkFacade

- http://japan.zdnet.com/sp/feature/07ide/story/0%2C3800077616%2C20352474%2C00.htm?ref=rss
> > 各製品の特徴と強みは?--「Java IDE新潮流」まとめ読み - ZDNet Japan

- http://www.popxpop.com/archives/2007/04/ruby_on_railsrails_road.html
> > Ruby On Railsのクラスを解析してダイアグラムにしてくれる『Rails Road』 | P O P * P O P

- http://ameblo.jp/ouobpo/entry-10039405893.html
> > パッケージ図とマインドマップ|Ouobpo

- http://www.itmedia.co.jp/enterprise/articles/0707/11/news003.html
> > ITmedia エンタープライズ:XML DBの本格的な普及を見据えたイベント DB2 9 Star Festival 2007が開催 (1/2)

- http://xhtmldoclet.sourceforge.net/
> > XHTML Doclet > Home

- http://journal.mycom.co.jp/news/2007/07/10/041/index.html
> > "Apache POI 3.0.1"登場 - 読み込みだけだがVisioへの対応を実現 | エンタープライズ | マイコミジャーナル

- http://w3voice.jp/engine/
> > 音声認識テキスト入力Javascriptライブラリ w3voiceIM.js

- http://dev.ariel-networks.com/modules/xfsection/article.php?articleid=50
> > アリエル エリア - ドキュメント-Google File System(GFS)技術メモ

- http://www.felipeandrade.org/blog/?p=226
> > Felipe Andrade - Flash Lite Brasil » Archive » Tornado Java NIO Server Released!

- http://d.hatena.ne.jp/starocker/20070710/p1
> > sta la sta - Webサービスの招待状をシェアするサービス - InviteShare

- http://gigazine.net/index.php?/news/comments/20070710_auslogics_registry_defrag/
> > レジストリをデフラグするフリーソフト「Auslogics Registry Defrag」 - GIGAZINE

- http://labs.gmo.jp/blog/ku/2007/07/autopagerizexpath_autopagerize_ide.html
> > AutoPagerize用のXPathをかんたんに作るためのブックマークレット AutoPagerize IDE - bits and bytes

- http://blogs.itmedia.co.jp/akihito/2007/07/post_d9a9.html
> > なぜ新宿紀伊國屋の店員はつまらなそうなのか - シロクマ日報 [ITmedia オルタナティブ・ブログ]

- http://www.popxpop.com/archives/2007/07/nielsennetratings.html
> > ページビューは死んだ!がついに現実に・・・?(Nielsen//NetRatingsの決断) | P O P * P O P

- http://web-tan.forum.impressrd.jp/e/2007/07/10/1627
> > このページはなぜ検索結果で上位にあるのか? を調べる方法 | Web担当者Forum

- http://www.moongift.jp/2007/07/jsblend/
> > MOONGIFT: » JavaScriptでDiff「JSBlend」:オープンソースを毎日紹介

- http://jp.youtube.com/watch?v=cm5Tz6wjEEk
> > YouTube - 柳原可奈子 - 合コン前の女子大生

« 2007年7月10日 | トップページ | 2007年7月12日 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク