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,91 @@
1
+ require 'etc'
2
+
3
+ class UserInfo
4
+ @@userList = Hash.new
5
+ def self.name arg = nil
6
+ emerge(arg).name
7
+ end
8
+ def self.home arg = nil
9
+ emerge(arg).home
10
+ end
11
+ def self.id arg = nil
12
+ emerge(arg).id
13
+ end
14
+ def self.emerge arg
15
+ arg ||= ENV['USER'] || Process.euid
16
+ @@userList[arg] || new(arg)
17
+ end
18
+ def initialize arg
19
+ if arg.is_a? Integer
20
+ @data = Etc.getpwuid arg
21
+ elsif arg.is_a? String
22
+ @data = Etc.getpwnam arg
23
+ else
24
+ raise ArgumentError.new("cannot use #{arg} for argument.")
25
+ end
26
+ @@userList[@data.uid] = self
27
+ @@userList[@data.name] = self
28
+ end
29
+ def id
30
+ @data.uid
31
+ end
32
+ def method_missing (label, *args)
33
+ @data.method(label).call(*args)
34
+ end
35
+ def to_s
36
+ @data.name
37
+ end
38
+ def to_i
39
+ @data.uid
40
+ end
41
+ def home
42
+ @data.dir
43
+ end
44
+ def group
45
+ GroupInfo.emerge(@data.gid)
46
+ end
47
+ end
48
+ class GroupInfo
49
+ @@groupList = Hash.new
50
+ def self.name arg = nil
51
+ GroupInfo.emerge(arg).name
52
+ end
53
+ def self.id arg = nil
54
+ GroupInfo.emerge(arg).id
55
+ end
56
+ def self.emerge arg = nil
57
+ if arg == nil
58
+ if ENV['USER']
59
+ arg = UserInfo.emerge(ENV['USER']).group.gid
60
+ else
61
+ arg = Process.egid
62
+ end
63
+ end
64
+ @@groupList[arg] || new(arg)
65
+ end
66
+ def initialize arg
67
+ if arg.is_a? Integer
68
+ @data = Etc.getgrgid arg
69
+ elsif arg.is_a? String
70
+ @data = Etc.getgrnam arg
71
+ else
72
+ raise ArgumentError.new("cannot use #{arg} for argument.")
73
+ end
74
+ @@groupList[@data.gid] = self
75
+ @@groupList[@data.name] = self
76
+ end
77
+ def id
78
+ @data.gid
79
+ end
80
+ def method_missing (label, *args)
81
+ @data.method(label).call(*args)
82
+ end
83
+ def to_s
84
+ @data.name
85
+ end
86
+ def to_i
87
+ @data.gid
88
+ end
89
+ end
90
+
91
+
@@ -0,0 +1,109 @@
1
+
2
+ require 'binding_of_caller'
3
+ require 'Yk/debug2'
4
+
5
+
6
+ module With
7
+ class WithClass < BasicObject
8
+ def self.getEffectiveMethods o
9
+ case o
10
+ when ::Class
11
+ parent = ::Class
12
+ when ::Module
13
+ parent = ::Module
14
+ else
15
+ parent = ::Object
16
+ end
17
+ o.methods - parent.instance_methods - parent.private_instance_methods
18
+ end
19
+ def __dup_error l
20
+ raise ::ArgumentError.new("'#{l}' is ambiguous symbol")
21
+ end
22
+ def initialize w, slf, b
23
+ @__with__ = w
24
+ @__self__ = slf
25
+ @__bind__ = b
26
+ end
27
+ List = {}
28
+ class AmbiguousConstantSymbolReferenced < ::ArgumentError
29
+ end
30
+ class AmbiguousConstantSymbolReferencer < BasicObject
31
+ def initialize label, file, lno
32
+ @label = label
33
+ @file = file
34
+ @lno = lno
35
+ end
36
+ def method_missing *args, **hash, &prc
37
+ raise AmbiguousConstantSymbolReferenced.new("Ambiguous constant, '#{@label}' used in #{file.basename}:#{lno} referenced")
38
+ end
39
+ end
40
+ end
41
+
42
+ refine Kernel do
43
+ def with w, &prc
44
+ b = binding.of_caller(1)
45
+ slf = b.eval("self")
46
+ if b.source_location[0] != "(eval)"
47
+ c = WithClass::List[b.source_location]
48
+ if c
49
+ return c.new(w, slf, b).instance_eval(&prc)
50
+ end
51
+ end
52
+ orgDefined = WithClass.getEffectiveMethods(slf)
53
+ lDefined = b.local_variables
54
+ lDefined += lDefined.map{|e| (e.to_s + "=").intern}
55
+ toAdd = WithClass.getEffectiveMethods(w)
56
+ dups = (orgDefined|lDefined) & toAdd
57
+ orgs = orgDefined - toAdd - lDefined
58
+ lcls = lDefined - toAdd
59
+ adds = toAdd - orgDefined - lDefined
60
+ kmths = Kernel.methods - Module.instance_methods - toAdd - orgDefined - lDefined
61
+ c = Class.new(WithClass)
62
+ dups.each do |l|
63
+ c.class_eval %{
64
+ def #{l}
65
+ __dup_error #{l.inspect}
66
+ end
67
+ }
68
+ end
69
+ orgs.each do |l|
70
+ c.class_eval %{
71
+ def #{l} *args, **hsh, &prc
72
+ @__self__.#{l} *args, **hsh, &prc
73
+ end
74
+ }
75
+ end
76
+ lcls.each do |l|
77
+ if l.to_s[-1] != "="
78
+ c.class_eval %{
79
+ def #{l}
80
+ @__bind__.local_variable_get(l)
81
+ end
82
+ }
83
+ else
84
+ c.class_eval %{
85
+ def #{l} arg
86
+ @__bind__.local_variable_set(l, arg)
87
+ end
88
+ }
89
+ end
90
+ end
91
+ adds.each do |l|
92
+ c.class_eval %{
93
+ def #{l} *args, **hsh, &prc
94
+ @__with__.#{l} *args, **hsh, &prc
95
+ end
96
+ }
97
+ end
98
+ main = TOPLEVEL_BINDING.eval("self")
99
+ kmths.each do |l|
100
+ c.define_method l do |*args, **hsh, &prc|
101
+ main.method(l).call *args, **hsh, &prc
102
+ end
103
+ end
104
+ WithClass::List[b.source_location] = c
105
+ c.new(w, slf, b).instance_eval(&prc)
106
+ end
107
+ end
108
+ end
109
+
@@ -0,0 +1,3 @@
1
+ module YkLib
2
+ VERSION = "0.1.0"
3
+ end
data/lib/YkLib.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "YkLib/version"
2
+
3
+ module YkLib
4
+ class Error < StandardError; end
5
+ # Your code goes here...
6
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: YkLib
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - yougain
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-02-02 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Yk support library
14
+ email:
15
+ - from-github@you.dix.asia
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".gitignore"
21
+ - ".rspec"
22
+ - ".travis.yml"
23
+ - CODE_OF_CONDUCT.md
24
+ - Gemfile
25
+ - Gemfile.lock
26
+ - LICENSE.txt
27
+ - README.md
28
+ - Rakefile
29
+ - YkLib.gemspec
30
+ - bin/console
31
+ - bin/setup
32
+ - lib/YkLib.rb
33
+ - lib/YkLib/Yk/__advance__.rb
34
+ - lib/YkLib/Yk/__defun__.rb
35
+ - lib/YkLib/Yk/__hook__.rb
36
+ - lib/YkLib/Yk/__minmax__.rb
37
+ - lib/YkLib/Yk/__stdlog.rb
38
+ - lib/YkLib/Yk/adhocLiterals.rb
39
+ - lib/YkLib/Yk/adhocLiterals/email.rb
40
+ - lib/YkLib/Yk/adhocLiterals/path.rb
41
+ - lib/YkLib/Yk/adhocLiterals/tag.rb
42
+ - lib/YkLib/Yk/adhocLiterals/url.rb
43
+ - lib/YkLib/Yk/auto_escseq.rb
44
+ - lib/YkLib/Yk/auto_pstore.rb
45
+ - lib/YkLib/Yk/bsearch.rb
46
+ - lib/YkLib/Yk/clambda.rb
47
+ - lib/YkLib/Yk/confLine.rb
48
+ - lib/YkLib/Yk/create_tty_width_available.rb
49
+ - lib/YkLib/Yk/crypt.rb
50
+ - lib/YkLib/Yk/debug2
51
+ - lib/YkLib/Yk/debug2.rb
52
+ - lib/YkLib/Yk/debugout.rb
53
+ - lib/YkLib/Yk/email_tz.rb
54
+ - lib/YkLib/Yk/enum_expect.rb
55
+ - lib/YkLib/Yk/errlog.rb
56
+ - lib/YkLib/Yk/escseq.rb
57
+ - lib/YkLib/Yk/eval_alt.rb
58
+ - lib/YkLib/Yk/expector.rb
59
+ - lib/YkLib/Yk/fetch.rb
60
+ - lib/YkLib/Yk/fetch_old.rb
61
+ - lib/YkLib/Yk/fib.rb
62
+ - lib/YkLib/Yk/file_aux.rb
63
+ - lib/YkLib/Yk/file_aux2.rb
64
+ - lib/YkLib/Yk/file_aux_old.rb
65
+ - lib/YkLib/Yk/filemod.rb
66
+ - lib/YkLib/Yk/force_escseq.rb
67
+ - lib/YkLib/Yk/generator__.rb
68
+ - lib/YkLib/Yk/generator__.rb.org
69
+ - lib/YkLib/Yk/indenter.rb
70
+ - lib/YkLib/Yk/indenter/argless_case.rb
71
+ - lib/YkLib/Yk/indenter/each_token.rb
72
+ - lib/YkLib/Yk/indenter/free_case.rb
73
+ - lib/YkLib/Yk/indenter/if_less.rb
74
+ - lib/YkLib/Yk/indenter/independent_ensure.rb
75
+ - lib/YkLib/Yk/indenter/independent_rescue.rb
76
+ - lib/YkLib/Yk/indenter/operand_circumflex.rb
77
+ - lib/YkLib/Yk/indenter/operand_period.rb
78
+ - lib/YkLib/Yk/indenter/parenless_and.rb
79
+ - lib/YkLib/Yk/indenter/post_test.rb
80
+ - lib/YkLib/Yk/indenter/token.rb
81
+ - lib/YkLib/Yk/inot.rb
82
+ - lib/YkLib/Yk/intf.rb
83
+ - lib/YkLib/Yk/io_aux.rb
84
+ - lib/YkLib/Yk/ioctl.rb
85
+ - lib/YkLib/Yk/ipcc.rb
86
+ - lib/YkLib/Yk/ipcountry.rb
87
+ - lib/YkLib/Yk/ipv4adr.rb
88
+ - lib/YkLib/Yk/localmail.rb
89
+ - lib/YkLib/Yk/method_chain.rb
90
+ - lib/YkLib/Yk/misc_tz.rb
91
+ - lib/YkLib/Yk/missing_method.rb
92
+ - lib/YkLib/Yk/mojiConv.rb
93
+ - lib/YkLib/Yk/nostdlog.rb
94
+ - lib/YkLib/Yk/on_marshal.rb
95
+ - lib/YkLib/Yk/overrider.rb
96
+ - lib/YkLib/Yk/path.rb
97
+ - lib/YkLib/Yk/path_aux.rb
98
+ - lib/YkLib/Yk/path_aux_alt.rb
99
+ - lib/YkLib/Yk/path_rep.rb
100
+ - lib/YkLib/Yk/pg_setup.rb
101
+ - lib/YkLib/Yk/procinfo.rb
102
+ - lib/YkLib/Yk/proclist.rb
103
+ - lib/YkLib/Yk/property.rb
104
+ - lib/YkLib/Yk/ranger.rb
105
+ - lib/YkLib/Yk/resolv_tz.rb
106
+ - lib/YkLib/Yk/rlprompt.rb
107
+ - lib/YkLib/Yk/rootexec.rb
108
+ - lib/YkLib/Yk/rpm-packageproxy.rb
109
+ - lib/YkLib/Yk/rpm-packageproxy2.rb
110
+ - lib/YkLib/Yk/rwhen.rb
111
+ - lib/YkLib/Yk/selector.rb
112
+ - lib/YkLib/Yk/set.rb
113
+ - lib/YkLib/Yk/shellquote.rb
114
+ - lib/YkLib/Yk/sio.rb
115
+ - lib/YkLib/Yk/sio0.rb
116
+ - lib/YkLib/Yk/sio_aux.rb
117
+ - lib/YkLib/Yk/sio_inot.rb
118
+ - lib/YkLib/Yk/sock_aux.rb
119
+ - lib/YkLib/Yk/spipe.rb
120
+ - lib/YkLib/Yk/sql_table.rb
121
+ - lib/YkLib/Yk/stdlog.rb
122
+ - lib/YkLib/Yk/syscommand.rb
123
+ - lib/YkLib/Yk/sysinit.rb
124
+ - lib/YkLib/Yk/ttyFontWidth.rb
125
+ - lib/YkLib/Yk/tty_char.dump
126
+ - lib/YkLib/Yk/tty_char.rb
127
+ - lib/YkLib/Yk/tty_char_create.rb
128
+ - lib/YkLib/Yk/tty_char_static.rb
129
+ - lib/YkLib/Yk/tty_rewrite.rb
130
+ - lib/YkLib/Yk/tty_str.rb
131
+ - lib/YkLib/Yk/tty_width.dat.rb
132
+ - lib/YkLib/Yk/tty_width.rb
133
+ - lib/YkLib/Yk/tty_width_available
134
+ - lib/YkLib/Yk/tty_width_list
135
+ - lib/YkLib/Yk/tty_width_list.linux
136
+ - lib/YkLib/Yk/tty_width_list.windows
137
+ - lib/YkLib/Yk/tz_tty
138
+ - lib/YkLib/Yk/tz_tty.rb
139
+ - lib/YkLib/Yk/uprepos.rb
140
+ - lib/YkLib/Yk/userinfo.rb
141
+ - lib/YkLib/Yk/with.rb
142
+ - lib/YkLib/version.rb
143
+ homepage: https://github.com/Yougain/YkLib
144
+ licenses:
145
+ - MIT
146
+ metadata:
147
+ allowed_push_host: https://rubygems.org
148
+ homepage_uri: https://github.com/Yougain/YkLib
149
+ source_code_uri: https://github.com/Yougain/YkLib
150
+ changelog_uri: https://github.com/Yougain/YkLib
151
+ post_install_message:
152
+ rdoc_options: []
153
+ require_paths:
154
+ - lib
155
+ required_ruby_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 2.3.0
160
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ requirements: []
166
+ rubygems_version: 3.1.2
167
+ signing_key:
168
+ specification_version: 4
169
+ summary: Yk support library
170
+ test_files: []