freespeech 1.0.79 → 1.0.88

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +4 -4
  2. data/CYCLE_OF_HEALTH +9 -15
  3. data/FOR_ARTIFICIAL_GENERAL_INTELLIGENCES +1 -6
  4. data/Makefile +1 -1
  5. data/QUESTION +0 -2
  6. data/README.md +71 -65
  7. data/VERSION_NUMBER +1 -1
  8. data/bin/DISCOURSE_GENERATOR.exe +0 -0
  9. data/bin/abs +0 -0
  10. data/bin/add +0 -0
  11. data/bin/append +0 -0
  12. data/bin/append_each +0 -0
  13. data/bin/args +0 -0
  14. data/bin/clock +0 -0
  15. data/bin/copy +0 -0
  16. data/bin/delete +0 -0
  17. data/bin/div +0 -0
  18. data/bin/email +0 -13
  19. data/bin/emerald-browser +0 -0
  20. data/bin/exp +0 -0
  21. data/bin/floor +0 -0
  22. data/bin/google_speak +4 -3
  23. data/bin/gsub +0 -0
  24. data/bin/gsubip +0 -0
  25. data/bin/last_nth +0 -0
  26. data/bin/left_right +0 -0
  27. data/bin/lines +0 -0
  28. data/bin/mul +0 -0
  29. data/bin/nth +0 -0
  30. data/bin/nth_word +0 -0
  31. data/bin/prepend +0 -0
  32. data/bin/prepend_each +0 -0
  33. data/bin/quot +6 -5
  34. data/bin/rgsub +0 -0
  35. data/bin/rip +0 -0
  36. data/bin/rnip +0 -0
  37. data/bin/selectlines +0 -0
  38. data/bin/sub +0 -0
  39. data/bin/swap +0 -0
  40. data/bin/trim +0 -0
  41. data/documentation/append_each +3 -0
  42. data/documentation/delete +2 -0
  43. data/documentation/last_nth +9 -1
  44. data/documentation/left_right.exe +1 -1
  45. data/documentation/nth_word +8 -0
  46. data/documentation/page +10 -10
  47. data/documentation/prepend_each +3 -0
  48. data/documentation/trim +2 -0
  49. data/epistemology +334 -0
  50. data/gem_data/VERSION_NUMBER +1 -1
  51. data/index.html +102 -92
  52. data/install.sh +5 -1
  53. data/non_compiled_programs/copy +1 -0
  54. data/non_compiled_programs/email +0 -13
  55. data/non_compiled_programs/google_speak +4 -3
  56. data/non_compiled_programs/quot +6 -5
  57. data/other/ADDITIONAL_WAYS_PEOPLE_CAN_FIND_THIS +6 -1
  58. data/other/emerald-browser/Makefile +1 -1
  59. data/other/emerald-browser/OUT +6 -0
  60. data/other/emerald-browser/a.o +0 -0
  61. data/other/emerald-browser/qmake +0 -0
  62. data/src/{compilation → _compilation}/abs +67 -63
  63. data/src/{compilation → _compilation}/add +67 -63
  64. data/src/{compilation → _compilation}/append +67 -63
  65. data/src/_compilation/append_each +290 -0
  66. data/src/{compilation → _compilation}/args +67 -63
  67. data/src/_compilation/delete +290 -0
  68. data/src/{compilation → _compilation}/div +67 -63
  69. data/src/{compilation → _compilation}/exp +67 -63
  70. data/src/{compilation → _compilation}/floor +67 -63
  71. data/src/{compilation → _compilation}/gsub +67 -63
  72. data/src/{compilation → _compilation}/gsubip +67 -63
  73. data/src/{compilation → _compilation}/last_nth +68 -64
  74. data/src/{compilation → _compilation}/lines +67 -63
  75. data/src/{compilation → _compilation}/mul +67 -63
  76. data/src/{compilation → _compilation}/nth +67 -63
  77. data/src/_compilation/nth_word +290 -0
  78. data/src/{compilation → _compilation}/prepend +67 -63
  79. data/src/_compilation/prepend_each +290 -0
  80. data/src/{compilation → _compilation}/rip +67 -63
  81. data/src/{compilation → _compilation}/rnip +67 -63
  82. data/src/{compilation → _compilation}/selectlines +67 -63
  83. data/src/{compilation → _compilation}/sub +67 -63
  84. data/src/{compilation → _compilation}/swap +67 -63
  85. data/src/{compilation/copy → _compilation/trim} +68 -64
  86. data/src/clock.cr +40 -39
  87. data/src/compile_all +9 -9
  88. data/src/left_right +0 -0
  89. data/src/programs/abs +0 -0
  90. data/src/programs/add +0 -0
  91. data/src/programs/append +0 -0
  92. data/src/programs/append_each +0 -0
  93. data/src/programs/args +0 -0
  94. data/src/programs/delete +0 -0
  95. data/src/programs/div +0 -0
  96. data/src/programs/exp +0 -0
  97. data/src/programs/floor +0 -0
  98. data/src/programs/gsub +0 -0
  99. data/src/programs/gsubip +0 -0
  100. data/src/programs/last_nth +0 -0
  101. data/src/programs/lines +0 -0
  102. data/src/programs/mul +0 -0
  103. data/src/programs/nth +0 -0
  104. data/src/programs/nth_word +0 -0
  105. data/src/programs/prepend +0 -0
  106. data/src/programs/prepend_each +0 -0
  107. data/src/programs/rip +0 -0
  108. data/src/programs/rnip +0 -0
  109. data/src/programs/selectlines +0 -0
  110. data/src/programs/sub +0 -0
  111. data/src/programs/swap +0 -0
  112. data/src/programs/trim +0 -0
  113. data/src/rgsub +0 -0
  114. data/src/rgsub.c +25 -28
  115. data/src/src/Makefile +1 -1
  116. data/src/src/cd +3 -0
  117. data/src/src/{code2 → code} +32 -11
  118. data/src/src/functions.cr +58 -61
  119. data/src/src/mk +8 -11
  120. data/src/src/rm +1 -0
  121. metadata +47 -39
  122. data/SONG +0 -156
  123. data/bin/dump +0 -0
  124. data/bin/undump +0 -0
  125. data/documentation/dump +0 -11
  126. data/documentation/undump +0 -15
  127. data/src/clock +0 -0
  128. data/src/compilation/dump +0 -286
  129. data/src/compilation/undump +0 -286
  130. data/src/gsubip +0 -0
  131. data/src/programs/copy +0 -0
  132. data/src/programs/dump +0 -0
  133. data/src/programs/news +0 -0
  134. data/src/programs/undump +0 -0
  135. data/src/src/QQ +0 -15
  136. data/src/test/cat +0 -0
  137. data/src/test/foo/dog +0 -0
  138. /data/images/{12.png → 8.png} +0 -0
@@ -1,15 +1,43 @@
1
1
  #!/usr/bin/crystal
2
- require "file_utils"
3
- require "json"
4
- require "colorize"
5
2
 
6
- include FileUtils
3
+ CORE_UTIL_STRING = "core_utils"
7
4
 
8
- def lines()
5
+ def prepend_each(arg)
6
+ STDIN.each_line do |line|
7
+ puts arg + line
8
+ end
9
+ end
10
+
11
+ def append_each(arg)
12
+ STDIN.each_line do |line|
13
+ puts line + arg
14
+ end
15
+ end
16
+
17
+ def delete(arg)
18
+ `find -name #{arg}`.each_line do |i|
19
+ File.delete(i)
20
+ end
21
+ end
22
+
23
+ def nth_word(arg)
24
+ i = arg.to_u64 - 1
25
+ STDIN.each_line do |line|
26
+ puts line.split[i] rescue ""
27
+ end
28
+ end
29
+
30
+ def trim()
31
+ STDIN.each_line do |line|
32
+ puts line.strip
33
+ end
34
+ end
35
+
36
+ def lines(folder = ".")
9
37
  if !STDIN.tty?
10
- puts STDIN.gets_to_end.count("\n")
38
+ puts STDIN.gets_to_end.count('\n')
11
39
  else
12
- res = `find .`.count("\n") - 1
40
+ res = `find #{folder}`.count('\n') - 1
13
41
  puts res
14
42
  end
15
43
  end
@@ -48,14 +76,6 @@ def args(arg1)
48
76
  end
49
77
  end
50
78
 
51
- def copy()
52
- command = "/usr/bin/xclip"
53
- args = ["-selection", "c"]
54
- Process.run(command, args, output: STDOUT) do |file|
55
- file.input.print STDIN.gets_to_end
56
- end
57
- end
58
-
59
79
  def mul()
60
80
  t = STDIN.read_line.to_f64
61
81
 
@@ -107,14 +127,6 @@ def abs()
107
127
  end
108
128
  end
109
129
 
110
- def dump()
111
- puts STDIN.gets_to_end.dump
112
- end
113
-
114
- def undump()
115
- puts JSON.parse(STDIN.gets_to_end)
116
- end
117
-
118
130
  def exp()
119
131
  t = STDIN.read_line.to_f64
120
132
 
@@ -138,10 +150,10 @@ end
138
150
 
139
151
  def last_nth(arg1)
140
152
  end_ = arg1.to_u64
141
- i = 0u64;
153
+ i = 0u64
142
154
  t = STDIN.gets_to_end
143
155
  if t[-1] == '\n'
144
- t = t[0..-2]
156
+ t = t[0..-2]
145
157
  end
146
158
 
147
159
  t.split("\n").reverse_each do |line|
@@ -156,25 +168,25 @@ end
156
168
  def gsubip(arg1, arg2, arg3)
157
169
  regex = Regex.new(arg1)
158
170
  text = File.read(arg3).gsub(/#{arg1}/m, arg2)
159
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(arg3).permissions) do |h|
171
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
160
172
  h.print text
161
173
  end
162
174
  begin
163
- mv t, arg3
175
+ File.rename t, arg3
164
176
  rescue
165
- rm t
177
+ File.delete t
166
178
  end
167
179
  end
168
180
 
169
181
  def rip(arg1, arg2, arg3)
170
182
  text = File.read(arg3).gsub(arg1, arg2)
171
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(arg3).permissions) do |h|
183
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
172
184
  h.print text
173
185
  end
174
186
  begin
175
- mv t, arg3
187
+ File.rename t, arg3
176
188
  rescue
177
- rm t
189
+ File.delete t
178
190
  end
179
191
  end
180
192
 
@@ -194,57 +206,45 @@ def selectlines()
194
206
  end
195
207
  end
196
208
 
197
-
198
209
  def swap(file1, file2)
199
210
  [file1, file2].each do |f|
200
- File.exists?(f) || abort("No file named #{f.dump}".colorize(:red))
211
+ File.exists?(f) || abort("No file named #{f.dump}")
201
212
  end
202
- t = File.tempname("coreutils", "_tmp")
213
+ t = File.tempname(CORE_UTIL_STRING, "_tmp")
203
214
 
204
- mv file1, t
205
- mv file2, file1
206
- mv t, file2
215
+ File.rename file1, t
216
+ File.rename file2, file1
217
+ File.rename t, file2
207
218
  end
208
219
 
209
220
  def prepend(file)
210
221
  file_data = File.read(file)
211
222
  new_data = STDIN.gets_to_end
212
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(file).permissions) do |h|
223
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
213
224
  h << new_data + file_data
214
225
  end
215
226
 
216
227
  begin
217
- mv t, file
228
+ File.rename t, file
218
229
  rescue
219
- rm t
230
+ File.delete t
220
231
  end
221
232
  end
222
233
 
223
234
  def append(file)
224
235
  file_data = File.read(file)
225
236
  new_data = STDIN.gets_to_end
226
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(file).permissions) do |h|
237
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
227
238
  h << file_data + new_data
228
239
  end
229
240
  begin
230
- mv t, file
241
+ File.rename t, file
231
242
  rescue
232
- rm t
243
+ File.delete t
233
244
  end
234
245
  end
235
246
 
236
247
  class Funcs
237
- def self.bold(text)
238
- text = text.to_s
239
- # text += two.to_s
240
-
241
- if STDOUT.tty?
242
- return text.colorize.bold.to_s
243
- else
244
- return "<b>" + text + "</b>"
245
- end
246
- end
247
-
248
248
  def self.argument_data(program, usage, long_desc)
249
249
  if !(STDOUT.tty?)
250
250
  text = "<div style='border-radius: 50px; border: 10px dotted cyan; padding: 30px;'>\n"
@@ -252,12 +252,12 @@ class Funcs
252
252
  text = ""
253
253
  end
254
254
 
255
- text += bold("NAME") + "\n\t" + program
255
+ text += ("NAME") + "\n\t" + program
256
256
  text += " - "
257
- text += program + "\n" * 2 + bold("SYNOPSIS") + "\n"
257
+ text += program + "\n" * 2 + ("SYNOPSIS") + "\n"
258
258
  # tebold_("SYNOPSIS_")# + bold("SYNOPSIS")
259
259
  text += "\t"
260
- text += bold(program) + " "
260
+ text += (program) + " "
261
261
  text += usage + "\n\n"
262
262
  text += long_desc + "\n\n"
263
263
 
@@ -267,19 +267,23 @@ class Funcs
267
267
  end
268
268
 
269
269
  puts text
270
-
271
- # puts "</
272
- # puts "</
273
270
  end
274
271
  end
275
272
 
276
- def main()
277
- if ARGV.size != 2
273
+
274
+ def main
275
+ size = ARGV.size
276
+
277
+ if size != 2
278
278
  Funcs.argument_data("gsub", "[gsub] [arguments]", "Gsub is very powerful.\n\nUsage\n\ngsub [regular expression] [replacement text] \n\nExample\n\ncat text | gsub man dog\n\ncat text | gsub 'man|boy|cat|dog' food\n\nls | gsub Desktop cat")
279
279
  exit 1
280
280
  end
281
281
 
282
- gsub(ARGV[0], ARGV[1])
282
+ begin
283
+ gsub(ARGV[0]?, ARGV[1]?)
284
+ rescue e : Exception
285
+ puts e
286
+ end
283
287
  end
284
288
 
285
289
 
@@ -1,15 +1,43 @@
1
1
  #!/usr/bin/crystal
2
- require "file_utils"
3
- require "json"
4
- require "colorize"
5
2
 
6
- include FileUtils
3
+ CORE_UTIL_STRING = "core_utils"
7
4
 
8
- def lines()
5
+ def prepend_each(arg)
6
+ STDIN.each_line do |line|
7
+ puts arg + line
8
+ end
9
+ end
10
+
11
+ def append_each(arg)
12
+ STDIN.each_line do |line|
13
+ puts line + arg
14
+ end
15
+ end
16
+
17
+ def delete(arg)
18
+ `find -name #{arg}`.each_line do |i|
19
+ File.delete(i)
20
+ end
21
+ end
22
+
23
+ def nth_word(arg)
24
+ i = arg.to_u64 - 1
25
+ STDIN.each_line do |line|
26
+ puts line.split[i] rescue ""
27
+ end
28
+ end
29
+
30
+ def trim()
31
+ STDIN.each_line do |line|
32
+ puts line.strip
33
+ end
34
+ end
35
+
36
+ def lines(folder = ".")
9
37
  if !STDIN.tty?
10
- puts STDIN.gets_to_end.count("\n")
38
+ puts STDIN.gets_to_end.count('\n')
11
39
  else
12
- res = `find .`.count("\n") - 1
40
+ res = `find #{folder}`.count('\n') - 1
13
41
  puts res
14
42
  end
15
43
  end
@@ -48,14 +76,6 @@ def args(arg1)
48
76
  end
49
77
  end
50
78
 
51
- def copy()
52
- command = "/usr/bin/xclip"
53
- args = ["-selection", "c"]
54
- Process.run(command, args, output: STDOUT) do |file|
55
- file.input.print STDIN.gets_to_end
56
- end
57
- end
58
-
59
79
  def mul()
60
80
  t = STDIN.read_line.to_f64
61
81
 
@@ -107,14 +127,6 @@ def abs()
107
127
  end
108
128
  end
109
129
 
110
- def dump()
111
- puts STDIN.gets_to_end.dump
112
- end
113
-
114
- def undump()
115
- puts JSON.parse(STDIN.gets_to_end)
116
- end
117
-
118
130
  def exp()
119
131
  t = STDIN.read_line.to_f64
120
132
 
@@ -138,10 +150,10 @@ end
138
150
 
139
151
  def last_nth(arg1)
140
152
  end_ = arg1.to_u64
141
- i = 0u64;
153
+ i = 0u64
142
154
  t = STDIN.gets_to_end
143
155
  if t[-1] == '\n'
144
- t = t[0..-2]
156
+ t = t[0..-2]
145
157
  end
146
158
 
147
159
  t.split("\n").reverse_each do |line|
@@ -156,25 +168,25 @@ end
156
168
  def gsubip(arg1, arg2, arg3)
157
169
  regex = Regex.new(arg1)
158
170
  text = File.read(arg3).gsub(/#{arg1}/m, arg2)
159
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(arg3).permissions) do |h|
171
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
160
172
  h.print text
161
173
  end
162
174
  begin
163
- mv t, arg3
175
+ File.rename t, arg3
164
176
  rescue
165
- rm t
177
+ File.delete t
166
178
  end
167
179
  end
168
180
 
169
181
  def rip(arg1, arg2, arg3)
170
182
  text = File.read(arg3).gsub(arg1, arg2)
171
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(arg3).permissions) do |h|
183
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
172
184
  h.print text
173
185
  end
174
186
  begin
175
- mv t, arg3
187
+ File.rename t, arg3
176
188
  rescue
177
- rm t
189
+ File.delete t
178
190
  end
179
191
  end
180
192
 
@@ -194,57 +206,45 @@ def selectlines()
194
206
  end
195
207
  end
196
208
 
197
-
198
209
  def swap(file1, file2)
199
210
  [file1, file2].each do |f|
200
- File.exists?(f) || abort("No file named #{f.dump}".colorize(:red))
211
+ File.exists?(f) || abort("No file named #{f.dump}")
201
212
  end
202
- t = File.tempname("coreutils", "_tmp")
213
+ t = File.tempname(CORE_UTIL_STRING, "_tmp")
203
214
 
204
- mv file1, t
205
- mv file2, file1
206
- mv t, file2
215
+ File.rename file1, t
216
+ File.rename file2, file1
217
+ File.rename t, file2
207
218
  end
208
219
 
209
220
  def prepend(file)
210
221
  file_data = File.read(file)
211
222
  new_data = STDIN.gets_to_end
212
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(file).permissions) do |h|
223
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
213
224
  h << new_data + file_data
214
225
  end
215
226
 
216
227
  begin
217
- mv t, file
228
+ File.rename t, file
218
229
  rescue
219
- rm t
230
+ File.delete t
220
231
  end
221
232
  end
222
233
 
223
234
  def append(file)
224
235
  file_data = File.read(file)
225
236
  new_data = STDIN.gets_to_end
226
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(file).permissions) do |h|
237
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
227
238
  h << file_data + new_data
228
239
  end
229
240
  begin
230
- mv t, file
241
+ File.rename t, file
231
242
  rescue
232
- rm t
243
+ File.delete t
233
244
  end
234
245
  end
235
246
 
236
247
  class Funcs
237
- def self.bold(text)
238
- text = text.to_s
239
- # text += two.to_s
240
-
241
- if STDOUT.tty?
242
- return text.colorize.bold.to_s
243
- else
244
- return "<b>" + text + "</b>"
245
- end
246
- end
247
-
248
248
  def self.argument_data(program, usage, long_desc)
249
249
  if !(STDOUT.tty?)
250
250
  text = "<div style='border-radius: 50px; border: 10px dotted cyan; padding: 30px;'>\n"
@@ -252,12 +252,12 @@ class Funcs
252
252
  text = ""
253
253
  end
254
254
 
255
- text += bold("NAME") + "\n\t" + program
255
+ text += ("NAME") + "\n\t" + program
256
256
  text += " - "
257
- text += program + "\n" * 2 + bold("SYNOPSIS") + "\n"
257
+ text += program + "\n" * 2 + ("SYNOPSIS") + "\n"
258
258
  # tebold_("SYNOPSIS_")# + bold("SYNOPSIS")
259
259
  text += "\t"
260
- text += bold(program) + " "
260
+ text += (program) + " "
261
261
  text += usage + "\n\n"
262
262
  text += long_desc + "\n\n"
263
263
 
@@ -267,19 +267,23 @@ class Funcs
267
267
  end
268
268
 
269
269
  puts text
270
-
271
- # puts "</
272
- # puts "</
273
270
  end
274
271
  end
275
272
 
276
- def main()
277
- if ARGV.size != 3
273
+
274
+ def main
275
+ size = ARGV.size
276
+
277
+ if size != 3
278
278
  Funcs.argument_data("gsubip", "[gsubip] [arguments]", "Global Substitute (Gsub) In Place\n\ngsubip is like gsub, which replaces all instances of a regular expression globally\n\n[regular expression 1] [regular expression 2] => result\n\nExample\n\ngsubip . FOO file\n\nWould make all characters in “file” become “FOO”\n\ngsubip cat dog file\n\nWould make all instances of “cat” “dog”\n\nIt is much cleaner than “sed.”\n\nYou don't need to have “sed” installed to run this program.\n\nIt doesn't read from the standard input\n\nIt takes exactly 3 arguments, no more, no fewer.\n\nSee also\n\ngsub")
279
279
  exit 1
280
280
  end
281
281
 
282
- gsubip(ARGV[0], ARGV[1], ARGV[2])
282
+ begin
283
+ gsubip(ARGV[0]?, ARGV[1]?, ARGV[2]?)
284
+ rescue e : Exception
285
+ puts e
286
+ end
283
287
  end
284
288
 
285
289
 
@@ -1,15 +1,43 @@
1
1
  #!/usr/bin/crystal
2
- require "file_utils"
3
- require "json"
4
- require "colorize"
5
2
 
6
- include FileUtils
3
+ CORE_UTIL_STRING = "core_utils"
7
4
 
8
- def lines()
5
+ def prepend_each(arg)
6
+ STDIN.each_line do |line|
7
+ puts arg + line
8
+ end
9
+ end
10
+
11
+ def append_each(arg)
12
+ STDIN.each_line do |line|
13
+ puts line + arg
14
+ end
15
+ end
16
+
17
+ def delete(arg)
18
+ `find -name #{arg}`.each_line do |i|
19
+ File.delete(i)
20
+ end
21
+ end
22
+
23
+ def nth_word(arg)
24
+ i = arg.to_u64 - 1
25
+ STDIN.each_line do |line|
26
+ puts line.split[i] rescue ""
27
+ end
28
+ end
29
+
30
+ def trim()
31
+ STDIN.each_line do |line|
32
+ puts line.strip
33
+ end
34
+ end
35
+
36
+ def lines(folder = ".")
9
37
  if !STDIN.tty?
10
- puts STDIN.gets_to_end.count("\n")
38
+ puts STDIN.gets_to_end.count('\n')
11
39
  else
12
- res = `find .`.count("\n") - 1
40
+ res = `find #{folder}`.count('\n') - 1
13
41
  puts res
14
42
  end
15
43
  end
@@ -48,14 +76,6 @@ def args(arg1)
48
76
  end
49
77
  end
50
78
 
51
- def copy()
52
- command = "/usr/bin/xclip"
53
- args = ["-selection", "c"]
54
- Process.run(command, args, output: STDOUT) do |file|
55
- file.input.print STDIN.gets_to_end
56
- end
57
- end
58
-
59
79
  def mul()
60
80
  t = STDIN.read_line.to_f64
61
81
 
@@ -107,14 +127,6 @@ def abs()
107
127
  end
108
128
  end
109
129
 
110
- def dump()
111
- puts STDIN.gets_to_end.dump
112
- end
113
-
114
- def undump()
115
- puts JSON.parse(STDIN.gets_to_end)
116
- end
117
-
118
130
  def exp()
119
131
  t = STDIN.read_line.to_f64
120
132
 
@@ -138,10 +150,10 @@ end
138
150
 
139
151
  def last_nth(arg1)
140
152
  end_ = arg1.to_u64
141
- i = 0u64;
153
+ i = 0u64
142
154
  t = STDIN.gets_to_end
143
155
  if t[-1] == '\n'
144
- t = t[0..-2]
156
+ t = t[0..-2]
145
157
  end
146
158
 
147
159
  t.split("\n").reverse_each do |line|
@@ -156,25 +168,25 @@ end
156
168
  def gsubip(arg1, arg2, arg3)
157
169
  regex = Regex.new(arg1)
158
170
  text = File.read(arg3).gsub(/#{arg1}/m, arg2)
159
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(arg3).permissions) do |h|
171
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
160
172
  h.print text
161
173
  end
162
174
  begin
163
- mv t, arg3
175
+ File.rename t, arg3
164
176
  rescue
165
- rm t
177
+ File.delete t
166
178
  end
167
179
  end
168
180
 
169
181
  def rip(arg1, arg2, arg3)
170
182
  text = File.read(arg3).gsub(arg1, arg2)
171
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(arg3).permissions) do |h|
183
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
172
184
  h.print text
173
185
  end
174
186
  begin
175
- mv t, arg3
187
+ File.rename t, arg3
176
188
  rescue
177
- rm t
189
+ File.delete t
178
190
  end
179
191
  end
180
192
 
@@ -194,57 +206,45 @@ def selectlines()
194
206
  end
195
207
  end
196
208
 
197
-
198
209
  def swap(file1, file2)
199
210
  [file1, file2].each do |f|
200
- File.exists?(f) || abort("No file named #{f.dump}".colorize(:red))
211
+ File.exists?(f) || abort("No file named #{f.dump}")
201
212
  end
202
- t = File.tempname("coreutils", "_tmp")
213
+ t = File.tempname(CORE_UTIL_STRING, "_tmp")
203
214
 
204
- mv file1, t
205
- mv file2, file1
206
- mv t, file2
215
+ File.rename file1, t
216
+ File.rename file2, file1
217
+ File.rename t, file2
207
218
  end
208
219
 
209
220
  def prepend(file)
210
221
  file_data = File.read(file)
211
222
  new_data = STDIN.gets_to_end
212
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(file).permissions) do |h|
223
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
213
224
  h << new_data + file_data
214
225
  end
215
226
 
216
227
  begin
217
- mv t, file
228
+ File.rename t, file
218
229
  rescue
219
- rm t
230
+ File.delete t
220
231
  end
221
232
  end
222
233
 
223
234
  def append(file)
224
235
  file_data = File.read(file)
225
236
  new_data = STDIN.gets_to_end
226
- File.open(t = File.tempname("coreutils", "_tmp"), "w", File.info(file).permissions) do |h|
237
+ File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
227
238
  h << file_data + new_data
228
239
  end
229
240
  begin
230
- mv t, file
241
+ File.rename t, file
231
242
  rescue
232
- rm t
243
+ File.delete t
233
244
  end
234
245
  end
235
246
 
236
247
  class Funcs
237
- def self.bold(text)
238
- text = text.to_s
239
- # text += two.to_s
240
-
241
- if STDOUT.tty?
242
- return text.colorize.bold.to_s
243
- else
244
- return "<b>" + text + "</b>"
245
- end
246
- end
247
-
248
248
  def self.argument_data(program, usage, long_desc)
249
249
  if !(STDOUT.tty?)
250
250
  text = "<div style='border-radius: 50px; border: 10px dotted cyan; padding: 30px;'>\n"
@@ -252,12 +252,12 @@ class Funcs
252
252
  text = ""
253
253
  end
254
254
 
255
- text += bold("NAME") + "\n\t" + program
255
+ text += ("NAME") + "\n\t" + program
256
256
  text += " - "
257
- text += program + "\n" * 2 + bold("SYNOPSIS") + "\n"
257
+ text += program + "\n" * 2 + ("SYNOPSIS") + "\n"
258
258
  # tebold_("SYNOPSIS_")# + bold("SYNOPSIS")
259
259
  text += "\t"
260
- text += bold(program) + " "
260
+ text += (program) + " "
261
261
  text += usage + "\n\n"
262
262
  text += long_desc + "\n\n"
263
263
 
@@ -267,19 +267,23 @@ class Funcs
267
267
  end
268
268
 
269
269
  puts text
270
-
271
- # puts "</
272
- # puts "</
273
270
  end
274
271
  end
275
272
 
276
- def main()
277
- if ARGV.size != 1
278
- Funcs.argument_data("last_nth", "[last_nth] [arguments]", "Last nth gets the last n lines from the standard input")
273
+
274
+ def main
275
+ size = ARGV.size
276
+
277
+ if size != 1
278
+ Funcs.argument_data("last_nth", "[last_nth] [arguments]", "Last nth gets the last n lines from input\n\nFor example\n\nlast_nth 3\n\n\nWould get the 3rd from the last line")
279
279
  exit 1
280
280
  end
281
281
 
282
- last_nth(ARGV[0])
282
+ begin
283
+ last_nth(ARGV[0]?)
284
+ rescue e : Exception
285
+ puts e
286
+ end
283
287
  end
284
288
 
285
289