YkLib 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Gemfile.lock +34 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +44 -0
  10. data/Rakefile +6 -0
  11. data/YkLib.gemspec +29 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/lib/YkLib/Yk/__advance__.rb +151 -0
  15. data/lib/YkLib/Yk/__defun__.rb +44 -0
  16. data/lib/YkLib/Yk/__hook__.rb +244 -0
  17. data/lib/YkLib/Yk/__minmax__.rb +123 -0
  18. data/lib/YkLib/Yk/__stdlog.rb +329 -0
  19. data/lib/YkLib/Yk/adhocLiterals/email.rb +119 -0
  20. data/lib/YkLib/Yk/adhocLiterals/path.rb +402 -0
  21. data/lib/YkLib/Yk/adhocLiterals/tag.rb +19 -0
  22. data/lib/YkLib/Yk/adhocLiterals/url.rb +36 -0
  23. data/lib/YkLib/Yk/adhocLiterals.rb +199 -0
  24. data/lib/YkLib/Yk/auto_escseq.rb +5 -0
  25. data/lib/YkLib/Yk/auto_pstore.rb +179 -0
  26. data/lib/YkLib/Yk/bsearch.rb +120 -0
  27. data/lib/YkLib/Yk/clambda.rb +309 -0
  28. data/lib/YkLib/Yk/confLine.rb +423 -0
  29. data/lib/YkLib/Yk/create_tty_width_available.rb +24 -0
  30. data/lib/YkLib/Yk/crypt.rb +26 -0
  31. data/lib/YkLib/Yk/debug2 +1 -0
  32. data/lib/YkLib/Yk/debug2.rb +473 -0
  33. data/lib/YkLib/Yk/debugout.rb +139 -0
  34. data/lib/YkLib/Yk/email_tz.rb +533 -0
  35. data/lib/YkLib/Yk/enum_expect.rb +170 -0
  36. data/lib/YkLib/Yk/errlog.rb +5 -0
  37. data/lib/YkLib/Yk/escseq.rb +59 -0
  38. data/lib/YkLib/Yk/eval_alt.rb +281 -0
  39. data/lib/YkLib/Yk/expector.rb +93 -0
  40. data/lib/YkLib/Yk/fetch.rb +556 -0
  41. data/lib/YkLib/Yk/fetch_old.rb +290 -0
  42. data/lib/YkLib/Yk/fib.rb +158 -0
  43. data/lib/YkLib/Yk/file_aux.rb +843 -0
  44. data/lib/YkLib/Yk/file_aux2.rb +919 -0
  45. data/lib/YkLib/Yk/file_aux_old.rb +160 -0
  46. data/lib/YkLib/Yk/filemod.rb +19 -0
  47. data/lib/YkLib/Yk/force_escseq.rb +3 -0
  48. data/lib/YkLib/Yk/generator__.rb +144 -0
  49. data/lib/YkLib/Yk/generator__.rb.org +139 -0
  50. data/lib/YkLib/Yk/indenter/argless_case.rb +46 -0
  51. data/lib/YkLib/Yk/indenter/each_token.rb +671 -0
  52. data/lib/YkLib/Yk/indenter/free_case.rb +313 -0
  53. data/lib/YkLib/Yk/indenter/if_less.rb +53 -0
  54. data/lib/YkLib/Yk/indenter/independent_ensure.rb +23 -0
  55. data/lib/YkLib/Yk/indenter/independent_rescue.rb +23 -0
  56. data/lib/YkLib/Yk/indenter/operand_circumflex.rb +0 -0
  57. data/lib/YkLib/Yk/indenter/operand_period.rb +16 -0
  58. data/lib/YkLib/Yk/indenter/parenless_and.rb +37 -0
  59. data/lib/YkLib/Yk/indenter/post_test.rb +48 -0
  60. data/lib/YkLib/Yk/indenter/token.rb +1525 -0
  61. data/lib/YkLib/Yk/indenter.rb +1382 -0
  62. data/lib/YkLib/Yk/inot.rb +265 -0
  63. data/lib/YkLib/Yk/intf.rb +815 -0
  64. data/lib/YkLib/Yk/io_aux.rb +1332 -0
  65. data/lib/YkLib/Yk/ioctl.rb +60 -0
  66. data/lib/YkLib/Yk/ipcc.rb +87 -0
  67. data/lib/YkLib/Yk/ipcountry.rb +207 -0
  68. data/lib/YkLib/Yk/ipv4adr.rb +318 -0
  69. data/lib/YkLib/Yk/localmail.rb +276 -0
  70. data/lib/YkLib/Yk/method_chain.rb +359 -0
  71. data/lib/YkLib/Yk/misc_tz.rb +1716 -0
  72. data/lib/YkLib/Yk/missing_method.rb +50 -0
  73. data/lib/YkLib/Yk/mojiConv.rb +257 -0
  74. data/lib/YkLib/Yk/nostdlog.rb +4 -0
  75. data/lib/YkLib/Yk/on_marshal.rb +20 -0
  76. data/lib/YkLib/Yk/overrider.rb +47 -0
  77. data/lib/YkLib/Yk/path.rb +293 -0
  78. data/lib/YkLib/Yk/path_aux.rb +883 -0
  79. data/lib/YkLib/Yk/path_aux_alt.rb +0 -0
  80. data/lib/YkLib/Yk/path_rep.rb +1267 -0
  81. data/lib/YkLib/Yk/pg_setup.rb +917 -0
  82. data/lib/YkLib/Yk/procinfo.rb +314 -0
  83. data/lib/YkLib/Yk/proclist.rb +492 -0
  84. data/lib/YkLib/Yk/property.rb +863 -0
  85. data/lib/YkLib/Yk/ranger.rb +606 -0
  86. data/lib/YkLib/Yk/resolv_tz.rb +88 -0
  87. data/lib/YkLib/Yk/rlprompt.rb +73 -0
  88. data/lib/YkLib/Yk/rootexec.rb +48 -0
  89. data/lib/YkLib/Yk/rpm-packageproxy.rb +784 -0
  90. data/lib/YkLib/Yk/rpm-packageproxy2.rb +1430 -0
  91. data/lib/YkLib/Yk/rwhen.rb +21 -0
  92. data/lib/YkLib/Yk/selector.rb +124 -0
  93. data/lib/YkLib/Yk/set.rb +170 -0
  94. data/lib/YkLib/Yk/shellquote.rb +300 -0
  95. data/lib/YkLib/Yk/sio.rb +1001 -0
  96. data/lib/YkLib/Yk/sio0.rb +835 -0
  97. data/lib/YkLib/Yk/sio_aux.rb +1524 -0
  98. data/lib/YkLib/Yk/sio_inot.rb +86 -0
  99. data/lib/YkLib/Yk/sock_aux.rb +42 -0
  100. data/lib/YkLib/Yk/spipe.rb +843 -0
  101. data/lib/YkLib/Yk/sql_table.rb +565 -0
  102. data/lib/YkLib/Yk/stdlog.rb +4 -0
  103. data/lib/YkLib/Yk/syscommand.rb +173 -0
  104. data/lib/YkLib/Yk/sysinit.rb +75 -0
  105. data/lib/YkLib/Yk/ttyFontWidth.rb +46113 -0
  106. data/lib/YkLib/Yk/tty_char.dump +0 -0
  107. data/lib/YkLib/Yk/tty_char.rb +47 -0
  108. data/lib/YkLib/Yk/tty_char_create.rb +437031 -0
  109. data/lib/YkLib/Yk/tty_char_static.rb +437016 -0
  110. data/lib/YkLib/Yk/tty_rewrite.rb +142 -0
  111. data/lib/YkLib/Yk/tty_str.rb +461 -0
  112. data/lib/YkLib/Yk/tty_width.dat.rb +114 -0
  113. data/lib/YkLib/Yk/tty_width.rb +180 -0
  114. data/lib/YkLib/Yk/tty_width_available +569 -0
  115. data/lib/YkLib/Yk/tty_width_list +0 -0
  116. data/lib/YkLib/Yk/tty_width_list.linux +280 -0
  117. data/lib/YkLib/Yk/tty_width_list.windows +324 -0
  118. data/lib/YkLib/Yk/tz_tty +0 -0
  119. data/lib/YkLib/Yk/tz_tty.rb +0 -0
  120. data/lib/YkLib/Yk/uprepos.rb +94 -0
  121. data/lib/YkLib/Yk/userinfo.rb +91 -0
  122. data/lib/YkLib/Yk/with.rb +109 -0
  123. data/lib/YkLib/version.rb +3 -0
  124. data/lib/YkLib.rb +6 -0
  125. metadata +170 -0
@@ -0,0 +1,50 @@
1
+
2
+
3
+ require 'Yk/__hook__'
4
+
5
+ module MissingMethod
6
+ def initialize_missing_method o, m
7
+ @obj__ = o
8
+ @method__ = m
9
+ end
10
+ def call *args, **opts, &bl
11
+ if @method__ =~ /[^a-zA-Z0-9_?]/ && !bl && args.size <= 1 && opts.size == 0
12
+ if args.size == 1
13
+ eval("@obj__ #{@method__} args[0]")
14
+ elsif args.size == 0
15
+ eval("#{@method__} @obj__")
16
+ end
17
+ else
18
+ eval("@obj__.#{@method__}(*args, **opts, &bl)")
19
+ end
20
+ end
21
+ def [] *args
22
+ call *args
23
+ end
24
+ def arity
25
+ raise NotImplementedError.new("MissingMethod#arity is not implemented")
26
+ end
27
+ def unbind
28
+ raise NotImplementedError.new("MissingMethod#unbound is not implemented")
29
+ end
30
+ end
31
+
32
+
33
+ class Object
34
+ alias_method :method_____, :method
35
+ def method (n)
36
+ begin
37
+ method_____(n)
38
+ rescue NameError
39
+ prx = method_____(:__id__)
40
+ prx.extend MissingMethod
41
+ prx.initialize_missing_method self, n
42
+ prx.__hook__ :inspect do |org|
43
+ org.call.sub(/#[^#]+$/, "##{n}")
44
+ end
45
+ prx
46
+ end
47
+ end
48
+ end
49
+
50
+
@@ -0,0 +1,257 @@
1
+
2
+
3
+ module MojiKonv
4
+ ZhKanjiList =
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
+ '谭谱谴贝贞负贡财责贤败账货质贩贪贫贬购贮贯贰贱贴贵贷贸费贺贼贾' +
32
+ '贿赁赂赃资赊赋赌赎赏赐赔赖赘赚赛赞赠赡赢赵赶趋跃踪躯车轧轨轩转轮' +
33
+ '软轰轴轻载轿较辅辆辈辉辐辑输辕辖辙辩辫边辽达迁过迈运还这进远违连' +
34
+ '迟迹适选逊递逻遗遥邓邮邻郑酝酱酿醉采释鉴针钉钓钙钝钞钟钠钢钥钦钧' +
35
+ '钩钮钱钳钻钾铁铃铅铆铜铝铡铣铭铲银铸铺链销锁锄锅锈锋锌锐错锚锡锣' +
36
+ '锤锥锦锨锭键锯锰锹锻镀镇镊镐镜镣镰镶长门闪闭问闯闰闲间闷闸闹闺闻' +
37
+ '闽阀阁阅阎阐阔队阳阴阵阶际陆陈陕陨险陷隐隶难雏雕雾霉霸韧韩韵页顶' +
38
+ '顷项顺须顽顾顿颁颂预颅领颇颈颊频颓颖颗题颜额颠颤风飘飞饥饭饮饰饱' +
39
+ '饲饵饶饺饼饿馁馅馆馋馏馒马驮驯驰驱驳驴驶驹驻驼驾骂骄骆骇验骏骑骗' +
40
+ '骚骡骤髓鱼鲁鲜鲤鲸鳖鳞鸟鸡鸣鸥鸦鸭鸯鸳鸵鸽鸿鹃鹅鹊鹏鹤鹰黑默齐齿' +
41
+ '龄龙龟漥';
42
+
43
+ JaKanjiList =
44
+ '醜専業叢東絲丟両厳喪個豊臨為麗挙麽義烏楽喬乗習郷書買虧雲亜産畝親' +
45
+ '億僅僕従侖倉儀們価倣衆優夥傘偉伝傷倫偽仏妳傭俠侶僥偵側僑倆倹債値' +
46
+ '傾仮償儲児兌蘭関興養獣岡冊軍農馮氷沖決況凍浄淒涼淩減湊凜幾鳳憑凱' +
47
+ '撃鑿劃劉則剛創刪別劊剤剣剝劇剰勧辦務働勁労勢勲勻華協単売蔔盧鹵臥' +
48
+ '衛巻廠庁暦厲圧厭廁廂廈廚県三発変畳隻葉嘆籲喫弔後嚇呂嗎噸聴啓呉嘔' +
49
+ '員嗆嗚詠嚨鹹響啞嘩喲喚啰嘯噴囂団園囪囲図円圏聖場壊塊堅壇壩塢墳墜' +
50
+ '壟塁墾墊牆増壌殻壺壱処備復夠頭誇夾奪奮奨粧婦媽姉婁嬌嬢娯嬰嬸孫寧' +
51
+ '実寵審憲宮寛賓対尋導爾塵嘗屍層屜屢嶼歳豈崗島嶺巒嶄巣鞏幣帥師帳簾' +
52
+ '幟帯幫併広荘慶廬庫応廟龐廃開異棄張彌彎弾強帰録徹徳憶憂懐態憐総懇' +
53
+ '悪悩懸憫驚恵懼懲憊慚慣癒憤願懶戯戦戸紮撲託執拡掃揚擾撫摳掄搶護報' +
54
+ '擡払抜拝擬攏揀擁攔擰撥択掛摯撓擋掙擠揮撈損撿換搗拠撚擲撣摻挿掲攬' +
55
+ '攙擱摟攪捜摂擺揺攤撐攆攢収効敵斂斎斬無時曠曇顕晉曬暁暈晩暫術樸機' +
56
+ '殺雑権楊傑極構棗槍楓櫃檸査柵標桟棟欄樹棲様檔橋槳樁夢検橢搾桜櫥歓' +
57
+ '歩殲毀毎畢斃氈気雰氫彙漢汚湯洶沈溝瀝淪滄滬濘涙潟潑沢潔窪漿澆濁' +
58
+ '測済渾濃塗渉湧濤澇渦渙滌潤澗漲渋澱淵漸漁滲渇遊潰濺渓滾満濾濫濱灘' +
59
+ '瀾瀕滅霊竈災燦砲錬爍爛燭煙煩焼燙熱煥愛爺牽犠猶狽獰獅猙獄猟豬瑪環' +
60
+ '現瑣瓊甕電暢疇疎療瘧瘡瘋癢瘓癟癱癬皺盞塩監蓋盤睜瞞矯礬鉱碼磚硯礫' +
61
+ '礎矽碩確礙砕堿禱禍離禿稈種積稭穢穏稲穂窮竅窯窓竄窩窺豎競筍筆籠築' +
62
+ '篩籌簽簡籮簍籃籬類粵糞糧粋緊糾紅繊約級紀紉緯純紗綱納縦紛紙紋紡紐' +
63
+ '線練組紳細織終絆紹繹経綁絨結繞絵給絡絶絞統絹繡継績緒続綽縄維綿繃' +
64
+ '綢綜綻緑綴緬纜緞緩締縷編縁縛縫纏纓縮繳網羅罰罷羨翹聳恥聶聾職聯聰' +
65
+ '粛腸膚腎腫脹脅勝膠脈臓臍脳膿臉臘膩騰輿舎艦艙艱豔芸節蕪蘆葦蒼蘇蘋' +
66
+ '範繭荊薦莢蕩栄葷熒薬萊蓮獲瑩蘿蛍営蕭薩蔥蔣藍藹蘊蔵虜慮雖蝦蝕蟻螞' +
67
+ '蛻蝸蠟蠅蟬蠍釁銜補襯襖襪襲褲裏見観規覓視覧覚謄計訂認譏討譲訓議訊' +
68
+ '記講諱訝許訛論訟諷設訪訣証評詛識詐訴診詞訳試詩誠話誕詭詢該詳誡誣' +
69
+ '語誤誘誨説誦請諸諾読誹課誰調諒諄談誼謀諜謊諧謁謂諺謎謝謡謗謙謹謬' +
70
+ '譚譜譴貝貞負貢財責賢敗賬貨質販貪貧貶購貯貫弐賤貼貴貸貿費賀賊賈' +
71
+ '賄賃賂贓資賒賦賭贖賞賜賠頼贅賺賽賛贈贍贏趙趕趨躍蹤軀車軋軌軒転輪' +
72
+ '軟轟軸軽載轎較輔輛輩輝輻輯輸轅轄轍弁弁辺遼達遷過邁運還這進遠違連' +
73
+ '遅跡適選遜逓邏遺遙鄧郵隣鄭醞醬醸酔採釈鑑針釘釣鈣鈍鈔鐘鈉鋼鑰欽鈞' +
74
+ '鈎鈕銭鉗鑽鉀鉄鈴鉛鉚銅鋁鍘銑銘鏟銀鋳舗鏈銷鎖鋤鍋鏽鋒鋅鋭錯錨錫鑼' +
75
+ '錘錐錦鍁錠鍵鋸錳鍬鍛鍍鎮鑷鎬鏡鐐鐮鑲長門閃閉問闖閏閑間悶閘鬧閨聞' +
76
+ '閩閥閣閲閻闡闊隊陽陰陣階際陸陳陝隕険陥隠隷難雛彫霧黴覇韌韓韻頁頂' +
77
+ '頃項順須頑顧頓頒頌預顱領頗頸頰頻頹穎顆題顔額顛顫風飄飛飢飯飲飾飽' +
78
+ '飼餌饒餃餅餓餒餡館饞餾饅馬駄馴馳駆駁驢駛駒駐駝駕罵驕駱駭験駿騎騙' +
79
+ '騒騾驟髄魚魯鮮鯉鯨鼈鱗鳥鶏鳴鷗鴉鴨鴦鴛鴕鴿鴻鵑鵝鵲鵬鶴鷹黒黙斉歯' +
80
+ '齢龍亀窪';
81
+
82
+ HankakuList0 =
83
+ ' !"#$%&'"'"'()*+,-./0123456789:;<=>?' +
84
+ '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`' +
85
+ 'abcdefghijklmnopqrstuvwxyz{|}~アイウ' +
86
+ 'エオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤ' +
87
+ 'ユヨラリルレロワヲンァィゥェォッャュョー。、「」゚゙・';
88
+
89
+ HankakuEisuList1 =
90
+ ' ! " # $ % & '+"' "+'( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ' +
91
+ '@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` ' +
92
+ 'a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~'
93
+
94
+ ZenkakuEisuList1 =
95
+ ' !”#$%&’()*+,-./0123456789:;<=>?' +
96
+ '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`' +
97
+ 'abcdefghijklmnopqrstuvwxyz{|}~'
98
+
99
+ HankakuList1 =
100
+ ' ! " # $ % & '+"' "+'( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ' +
101
+ '@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` ' +
102
+ 'a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ア イ ウ ' +
103
+ 'エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ' +
104
+ 'ユ ヨ ラ リ ル レ ロ ワ ヲ ン ァ ィ ゥ ェ ォ ッ ャ ュ ョ ー 。 、 「 」 ゚ ゙ ・ ';
105
+
106
+ ZenkakuList1 =
107
+ ' !”#$%&’()*+,-./0123456789:;<=>?' +
108
+ '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`' +
109
+ 'abcdefghijklmnopqrstuvwxyz{|}~アイウ' +
110
+ 'エオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤ' +
111
+ 'ユヨラリルレロワヲンァィゥェォッャュョー。、「」゜゛・';
112
+
113
+ HankakuList2 =
114
+ 'ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ';
115
+ ZenkakuList2 =
116
+ 'ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ';
117
+
118
+ HiraganaList1 =
119
+ 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむ' +
120
+ 'めもやゆよらりるれろわをんぁぃぅぇぉっゃゅょ';
121
+ KatakanaList1 =
122
+ 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミム' +
123
+ 'メモヤユヨラリルレロワヲンァィゥェォッャュョ';
124
+ HankanaList1 =
125
+ 'ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム ' +
126
+ 'メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヲ ン ァ ィ ゥ ェ ォ ッ ャ ュ ョ ';
127
+
128
+ HiraganaList2 =
129
+ 'がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ';
130
+ KatakanaList2 =
131
+ 'ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ';
132
+ HankanaList2 =
133
+ 'ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ';
134
+
135
+ end
136
+
137
+
138
+ class String
139
+ def hankaku
140
+ ret = ""
141
+ each_char do |c|
142
+ i = MojiKonv::ZenkakuList2.index(c)
143
+ if i
144
+ cv = MojiKonv::HankakuList2[i * 2, 2]
145
+ else
146
+ i = MojiKonv::ZenkakuList1.index(c)
147
+ if i
148
+ cv = MojiKonv::HankakuList1[i * 2, 1]
149
+ else
150
+ cv = c
151
+ end
152
+ end
153
+ ret += cv
154
+ end
155
+ ret
156
+ end
157
+ def hankaku!
158
+ replace hankaku
159
+ self
160
+ end
161
+ def hiragana2hankaku
162
+ ret = ""
163
+ each_char do |c|
164
+ i = MojiKonv::HiraganaList2.index(c)
165
+ if i
166
+ cv = MojiKonv::HankanaList2[i * 2, 2]
167
+ else
168
+ i = MojiKonv::HiraganaList1.index(c)
169
+ if i
170
+ cv = MojiKonv::HankanaList1[i * 2, 1]
171
+ else
172
+ cv = c
173
+ end
174
+ end
175
+ ret += cv
176
+ end
177
+ ret
178
+ end
179
+ def eisuHankaku
180
+ ret = ""
181
+ each_char do |c|
182
+ i = MojiKonv::ZenkakuEisuList1.index(c)
183
+ if i
184
+ cv = MojiKonv::HankakuList1[i * 2, 1]
185
+ else
186
+ cv = c
187
+ end
188
+ ret += cv
189
+ end
190
+ ret
191
+ end
192
+ def hankakuEisu
193
+ eisuHankaku
194
+ end
195
+ def hankakuEisu!
196
+ replace eisuHankaku
197
+ end
198
+ def eisuHankaku!
199
+ replace eisuHankaku
200
+ end
201
+ def hiragana2hankaku!
202
+ replace hiragana2hankaku
203
+ self
204
+ end
205
+ def shinjitai
206
+ ret = ""
207
+ each_char do |c|
208
+ i = MojiKonv::ZhKanjiList.index(c)
209
+ if i
210
+ cv = MojiKonv::JaKanjiList[i]
211
+ else
212
+ cv = c
213
+ end
214
+ ret += cv
215
+ end
216
+ ret
217
+ end
218
+ def shinjitai!
219
+ replace shinjitai
220
+ self
221
+ end
222
+ def encodeOr encoding
223
+ ret = "".encode(encoding)
224
+ each_char do |c|
225
+ cv = nil
226
+ begin
227
+ cv = c.encode(encoding)
228
+ rescue
229
+ if block_given?
230
+ cv = yield(c).encode(encoding) rescue '?'.encode(encoding)
231
+ else
232
+ cv = '?'.encode(encoding)
233
+ end
234
+ end
235
+ ret += cv
236
+ end
237
+ ret
238
+ end
239
+ def encodeOr! encoding, &bl
240
+ ret = encodeOr encoding, &bl
241
+ replace ret
242
+ self
243
+ end
244
+ def width
245
+ w = 0
246
+ each_char do |c|
247
+ if MojiKonv::HankakuList0.include?(c) || c.ord < 0x80
248
+ w += 1
249
+ else
250
+ w += 2
251
+ end
252
+ end
253
+ w
254
+ end
255
+ end
256
+
257
+
@@ -0,0 +1,4 @@
1
+
2
+ ENV['STDLOG_NO_CONSOLE'] = "1"
3
+ require 'Yk/stdlog'
4
+
@@ -0,0 +1,20 @@
1
+
2
+ module OnMarshal
3
+ def marshal_dump
4
+ if respond_to? :on_marshal_dump
5
+ on_marshal_dump
6
+ end
7
+ Marshal::dump(self.instance_variables.collect{|var| [var, instance_variable_get(var)]})
8
+ end
9
+ def marshal_load(obj)
10
+ Marshal::load(obj).each{ |value|
11
+ instance_variable_set(value[0], value[1])
12
+ }
13
+ if respond_to? :on_marshal_load
14
+ on_marshal_load
15
+ end
16
+ end
17
+ end
18
+
19
+
20
+
@@ -0,0 +1,47 @@
1
+
2
+ class Module
3
+ def override_prev (*mnames)
4
+ mnames.each do |mname|
5
+ alias_method "__org_" + mname.to_s, mname
6
+ if !defined? @prev_overriden
7
+ @prev_overriden = Hash.new
8
+ end
9
+ if @prev_overriden[mname] != nil
10
+ raise Exception.new("cannot define two overriding methods for #{mname}\n")
11
+ end
12
+ @prev_overriden[mname] = true
13
+ end
14
+ end
15
+ def override_prev_commit
16
+ @prev_overriden.each_key do |mname|
17
+ alias_method "__new_" + mname.to_s, mname
18
+ module_eval %Q{
19
+ def #{"org_" + mname.to_s} (*args, &proc)
20
+ k = "__#{name}__original__"
21
+ if Thread.current[k] == nil
22
+ Thread.current[k] = 0
23
+ end
24
+ Thread.current[k] += 1
25
+ begin
26
+ #{"__org_" + mname.to_s}(*args, &proc)
27
+ ensure
28
+ Thread.current[k] -= 1
29
+ end
30
+ end
31
+ def #{mname} (*args, &proc)
32
+ k = "__#{name}__original__"
33
+ if Thread.current[k] == nil
34
+ Thread.current[k] = 0
35
+ end
36
+ if Thread.current[k] > 0
37
+ #{"__org_" + mname.to_s}(*args, &proc)
38
+ else
39
+ #{"__new_" + mname.to_s}(*args, &proc)
40
+ end
41
+ end
42
+ }
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -0,0 +1,293 @@
1
+
2
+
3
+ class AdhocLiterals
4
+ class Path
5
+ def initialize arg
6
+ @literal = arg
7
+ end
8
+ end
9
+ def self.__path__ arg
10
+ Path.new arg
11
+ end
12
+ end
13
+
14
+
15
+ class GrammerExt
16
+ class Indenter
17
+ PATH_HEAD = "AdhocLiterals::__path__("
18
+ BOTH_HEAD = "AdhocLiterals::__reg_path__("
19
+ CSelectInPathRegExpr = '\[(\!|\^|)(\\\-|\.|\~|\w|[A-Z]\-[A-Z]|[a-z]\-[a-z]|[0-9]\-[0-9])*\]'
20
+ CSelectInPathRegExprPrev = Regexp.new(CSelectInPathRegExpr + '$')
21
+ CSelectInPathRegExprCur = Regexp.new('^' + CSelectInPathRegExpr)
22
+ def mayConcatenatePath t
23
+ if t.kind != :on_nl && t.kind != :on_sp && !@expr.anot[t.ipos]
24
+ ett = tt = t.prev_meaningful
25
+ if fap, mode = @expr.anot[tt.ipos]
26
+ modeList.unshift [mode, tt.ipos]
27
+ loop do
28
+ begin
29
+ ftt = tt
30
+ tt = tt.prev_meaningful
31
+ end until fap != (tfap, mode = @expr.anot[tt.ipos])[0]
32
+ if mode
33
+ modeList.unshift [mode, tt.ipos]
34
+ else
35
+ break
36
+ end
37
+ fap = tfap
38
+ end
39
+ if modeList.size > 1
40
+ modeList.each_cons 2 do |f, n|
41
+ case [f[0][0], n[0][0]]
42
+ when [:sl_beg, :sl_beg],
43
+ [:sl_beg, :sl_both],
44
+ [:sl_middle, :sl_beg],
45
+ [:sl_middle, :sl_both],
46
+ [:sl_end, :sl_end],
47
+ [:sl_end, :sl_middle],
48
+ [:sl_both, :sl_end],
49
+ [:sl_both, :sl_middle],
50
+ [:sl_url, :sl_beg],
51
+ [:sl_url, :sl_both]
52
+ else
53
+ raise Error.new("cannot concatenate path")
54
+ end
55
+ end
56
+ end
57
+ toConcatenate = @expr[ftt.ipos...ett.ipos + ett.str.size]
58
+ head = if defined?(AdhocLiterals::Url) && @expr[ftt.iops] =~ /^[a-zA-Z][a-zA-Z0-9\.+\-]*:/
59
+ URL_HEAD
60
+ elsif defined?(AdhocLiterals::Path)
61
+ modeList[0][1] == :both ? BOTH_HEAD : PATH_HEAD
62
+ end
63
+ if head
64
+ @expr[ftt.ipos...ett.ipos + ett.str.size] = head + toConcatenate + ")"
65
+ @expr.clear_anot
66
+ raise Restart.new
67
+ end
68
+ end
69
+ end
70
+ end
71
+ def pathRestart st, ed, pstack, mode
72
+ subst = ""
73
+ inDQ = false
74
+ dqStart = nil
75
+ if st < pstack[0]
76
+ if !["'", '"'].include? @expr[st]
77
+ subst += '"'
78
+ dqStart = st
79
+ inDQ = true
80
+ end
81
+ end
82
+ pstack.each_index do |idx|
83
+ i, j = pstack[idx], pstack[idx + 1]
84
+ if inDQ
85
+ if j
86
+ if i + 1 == j
87
+ next
88
+ elsif ["'", '"'].include? @expr[i + 1]
89
+ subst += @expr[dqStart .. i] + '"'
90
+ inDQ = false
91
+ end
92
+ end
93
+ else
94
+ subst += '"'
95
+ dqStart = i
96
+ inDQ = true
97
+ end
98
+ end
99
+ # inDQ should be true
100
+ if ed - 1 > pstack[-1]
101
+ if ["'", '"'].include? @expr[ed - 1]
102
+ subst += @expr[dqStart .. pstack[-1]] + '"' + @expr[pstack[-1] + 1 ... ed]
103
+ else
104
+ subst += @expr[dqStart ... ed] + '"'
105
+ end
106
+ else
107
+ subst += '"'
108
+ end
109
+ emode = case [@expr[st] == "/", @expr[ed] == "/"]
110
+ when [true, true]
111
+ :sl_both
112
+ when [true, false]
113
+ :sl_beg
114
+ when [false, true]
115
+ :sl_end
116
+ when [false, false]
117
+ :sl_middle
118
+ end
119
+ @expr.ssubst st...ed, subst, [mode, emode]
120
+ raise Restart.new
121
+ end
122
+ # /"can use backslash escape" :path
123
+ # /cannot_use_backslash_escape :path
124
+ # /using\ backslash\ / :regexp
125
+ # /path[)}\]] :path and closing ')', '}', ']'
126
+ # /path,(\s|$) :path '/path' and comma operator
127
+ # /path\s :path '/path'
128
+ # /foo/i :both functional object '/foo/i', without space and backslash until closing '/'
129
+ # /foo/.to_s :path '/foo/.to_s'
130
+ # /foo/ .to_s :both functional object '/foo/' calling method '.to_s'
131
+ # / a :devide operator
132
+ # /ab[)\]}] :path, '/ab' and parenthesis/bracket/brace closing
133
+ # /ab,(\s|$) :path, '/ab' and comma operator
134
+ # /ab,c :path, '/ab,c'
135
+ # /"ab c" :path
136
+ # /"ab c"aaa :error
137
+ # /abc"aa :error
138
+ # /abc"aa/ :regexp
139
+ # /abc"aa / :error: path '/abc"aa', '/'
140
+ # /"abc / regexp
141
+ # /"abc/" error, path segment cannot contain '/'
142
+ # /"abc\/" error, path segment cannot contain '/'
143
+ # /\"abc d/ regexp
144
+ # /* c comment start
145
+ #
146
+ def checkPath st, origin = nil, pstack = []
147
+ firstSlash = @expr[st] == "/"
148
+ bstack = []
149
+ i = st
150
+ i += 1 if @expr[i] == "}" #embeded expression closing
151
+ k = nil
152
+ res = nil
153
+ mode = origin && st != origin ? :path : nil
154
+ while o = @expr[i]
155
+ case o
156
+ when "/"
157
+ pstack.push i
158
+ if pstack.size == 3
159
+ mode = :path
160
+ end
161
+ rp = i
162
+ while ["'", '"'].include? @expr[i + 1]
163
+ i = getStringEndExceptSlash(i + 1)
164
+ if !i
165
+ raise Error.new("cannot find string end, #{@expr[i + 1]}")
166
+ else
167
+ j = i
168
+ while @expr[i + 1] == "/"
169
+ i += 1
170
+ pstack.push i
171
+ end
172
+ end
173
+ end
174
+ if rp != i
175
+ mode = :path
176
+ if @expr[i] != "/"
177
+ break # /"foo"[^\/]
178
+ end
179
+ #else continue after "/"
180
+ end
181
+ when ",", ";"
182
+ if @expr[i, 2] =~ /^.(\s|$)/
183
+ break
184
+ end
185
+ when '"', "'", "`"
186
+ break
187
+ when ")", "]", "}" #orphan
188
+ break
189
+ when "[", "{", "("
190
+ break if !firstSlash
191
+ if !(k = getClosing(i))
192
+ raise Error.new("cannot find closing #{@expr[i]}")
193
+ end
194
+ when "#" #embeded expression do not allow first ".", "/", "?", "*", "{}", "[]", otherwise use #wpd{...}, w:wild([],{}.?,*), p:period(.), d:directory(/)
195
+ k = checkExtendedEmbExpr(i, :path)
196
+ when "\\"
197
+ if mode == :path || pstack.size >= 2
198
+ raise Error.new("path expression without double quotation cannot contain bare backslash, '\\'")
199
+ else
200
+ mode = :regexp
201
+ break
202
+ end
203
+ when /\s/
204
+ break
205
+ else
206
+ if o < 0x20
207
+ raise Error.new("cannot use control character, chr(0x0x#{o.t_s.sprintf('%02x')})")
208
+ end
209
+ end
210
+ if !k
211
+ i += 1
212
+ else
213
+ i = k + 1
214
+ k = nil
215
+ end
216
+ end
217
+ if !mode && pstack.size == 2
218
+ ropts = "uesnmxi"
219
+ j = 1
220
+ while (c = @expr[pstack[1] + j]) && (roi = ropts.index(c))
221
+ ropts.slice!(roi)
222
+ ++j
223
+ end
224
+ if j != 1 && @expr[pstack[1] + j - 1, 2] =~ /.\b/
225
+ mode = :both
226
+ else
227
+ mode = :path
228
+ end
229
+ end
230
+ if pstack.size != 0
231
+ if firstSlash
232
+ if !origin || origin == st
233
+ pathRestart @expr, st, i, pstack, mode
234
+ else
235
+ pathRestart @expr, origin, i, pstack, mode
236
+ end
237
+ else
238
+ yield i, pstack
239
+ end
240
+ end
241
+ end
242
+ def checkPrevIsPath tenum, st = nil, ed = nil, pstack = nil
243
+ if tenum
244
+ t = token = tenum.peek
245
+ last = nil
246
+ while t.prev&.kind == :on_tstring_end && ['"', "'"].include?(t.prev.beginner.str[0])
247
+ t = t.beginner
248
+ end
249
+ if t != token
250
+ checkPath token.ipos, t.ipos # no return raise Restart
251
+ end
252
+ i = token.ipos
253
+ else
254
+ i = st
255
+ end
256
+ k = nil
257
+ while o = @expr[i]
258
+ case o
259
+ when "[", "{", "("
260
+ break
261
+ when "]", "}", ")"
262
+ #if !(k = getOpening(@expr, i))
263
+ break
264
+ #end
265
+ when "\\", '"', "'", '`'
266
+ break
267
+ when 0x20
268
+ if @expr[i - 1] == "\\"
269
+ i -= 1
270
+ else
271
+ break
272
+ end
273
+ else
274
+ if o < 0x20
275
+ break
276
+ end
277
+ end
278
+ if k
279
+ i = k - 1
280
+ k = nil
281
+ else
282
+ i -= 1
283
+ end
284
+ end
285
+ if tenum
286
+ checkPath token.ipos, i + 1
287
+ else
288
+ pathRestart i + 1, ed, pstack, :path
289
+ end
290
+ end
291
+
292
+ end
293
+ end