politics 1.0.82 → 1.0.88
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CYCLE_OF_HEALTH +9 -15
- data/Makefile +1 -1
- data/README.md +54 -46
- data/VERSION_NUMBER +1 -1
- data/bin/append_each +0 -0
- data/bin/google_speak +4 -3
- data/bin/lines +0 -0
- data/bin/nth_word +0 -0
- data/bin/prepend_each +0 -0
- data/bin/rgsub +0 -0
- data/documentation/append_each +3 -0
- data/documentation/left_right.exe +1 -1
- data/documentation/page +41 -41
- data/documentation/prepend_each +3 -0
- data/gem_data/VERSION_NUMBER +1 -1
- data/index.html +57 -51
- data/install.sh +5 -1
- data/non_compiled_programs/google_speak +4 -3
- data/src/_compilation/abs +38 -19
- data/src/_compilation/add +38 -19
- data/src/_compilation/append +38 -19
- data/src/_compilation/append_each +290 -0
- data/src/_compilation/args +38 -19
- data/src/_compilation/delete +38 -19
- data/src/_compilation/div +38 -19
- data/src/_compilation/exp +38 -19
- data/src/_compilation/floor +38 -19
- data/src/_compilation/gsub +38 -19
- data/src/_compilation/gsubip +38 -19
- data/src/_compilation/last_nth +38 -19
- data/src/_compilation/lines +38 -19
- data/src/_compilation/mul +38 -19
- data/src/_compilation/nth +38 -19
- data/src/_compilation/nth_word +38 -19
- data/src/_compilation/prepend +38 -19
- data/src/_compilation/prepend_each +290 -0
- data/src/_compilation/rip +38 -19
- data/src/_compilation/rnip +38 -19
- data/src/_compilation/selectlines +38 -19
- data/src/_compilation/sub +38 -19
- data/src/_compilation/swap +38 -19
- data/src/_compilation/trim +38 -19
- data/src/programs/append_each +0 -0
- data/src/programs/lines +0 -0
- data/src/programs/prepend_each +0 -0
- data/src/rgsub +0 -0
- data/src/rgsub.c +24 -25
- data/src/src/Makefile +1 -1
- data/src/src/cd +3 -0
- data/src/src/code +30 -9
- data/src/src/functions.cr +29 -16
- data/src/src/mk +6 -8
- data/src/src/rm +1 -0
- metadata +12 -3
- data/src/src/q.cr +0 -9
- /data/images/{12.png → 8.png} +0 -0
data/src/_compilation/sub
CHANGED
@@ -1,11 +1,24 @@
|
|
1
1
|
#!/usr/bin/crystal
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
CORE_UTIL_STRING = "core_utils"
|
4
|
+
|
5
|
+
def prepend_each(arg)
|
6
|
+
STDIN.each_line do |line|
|
7
|
+
puts arg + line
|
8
|
+
end
|
7
9
|
end
|
8
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
|
9
22
|
|
10
23
|
def nth_word(arg)
|
11
24
|
i = arg.to_u64 - 1
|
@@ -20,11 +33,11 @@ def trim()
|
|
20
33
|
end
|
21
34
|
end
|
22
35
|
|
23
|
-
def lines()
|
36
|
+
def lines(folder = ".")
|
24
37
|
if !STDIN.tty?
|
25
|
-
puts STDIN.gets_to_end.count(
|
38
|
+
puts STDIN.gets_to_end.count('\n')
|
26
39
|
else
|
27
|
-
res = `find
|
40
|
+
res = `find #{folder}`.count('\n') - 1
|
28
41
|
puts res
|
29
42
|
end
|
30
43
|
end
|
@@ -155,25 +168,25 @@ end
|
|
155
168
|
def gsubip(arg1, arg2, arg3)
|
156
169
|
regex = Regex.new(arg1)
|
157
170
|
text = File.read(arg3).gsub(/#{arg1}/m, arg2)
|
158
|
-
File.open(t = File.tempname(
|
171
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
|
159
172
|
h.print text
|
160
173
|
end
|
161
174
|
begin
|
162
175
|
File.rename t, arg3
|
163
176
|
rescue
|
164
|
-
|
177
|
+
File.delete t
|
165
178
|
end
|
166
179
|
end
|
167
180
|
|
168
181
|
def rip(arg1, arg2, arg3)
|
169
182
|
text = File.read(arg3).gsub(arg1, arg2)
|
170
|
-
File.open(t = File.tempname(
|
183
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
|
171
184
|
h.print text
|
172
185
|
end
|
173
186
|
begin
|
174
187
|
File.rename t, arg3
|
175
188
|
rescue
|
176
|
-
|
189
|
+
File.delete t
|
177
190
|
end
|
178
191
|
end
|
179
192
|
|
@@ -197,7 +210,7 @@ def swap(file1, file2)
|
|
197
210
|
[file1, file2].each do |f|
|
198
211
|
File.exists?(f) || abort("No file named #{f.dump}")
|
199
212
|
end
|
200
|
-
t = File.tempname(
|
213
|
+
t = File.tempname(CORE_UTIL_STRING, "_tmp")
|
201
214
|
|
202
215
|
File.rename file1, t
|
203
216
|
File.rename file2, file1
|
@@ -207,27 +220,27 @@ end
|
|
207
220
|
def prepend(file)
|
208
221
|
file_data = File.read(file)
|
209
222
|
new_data = STDIN.gets_to_end
|
210
|
-
File.open(t = File.tempname(
|
223
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
|
211
224
|
h << new_data + file_data
|
212
225
|
end
|
213
226
|
|
214
227
|
begin
|
215
228
|
File.rename t, file
|
216
229
|
rescue
|
217
|
-
|
230
|
+
File.delete t
|
218
231
|
end
|
219
232
|
end
|
220
233
|
|
221
234
|
def append(file)
|
222
235
|
file_data = File.read(file)
|
223
236
|
new_data = STDIN.gets_to_end
|
224
|
-
File.open(t = File.tempname(
|
237
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
|
225
238
|
h << file_data + new_data
|
226
239
|
end
|
227
240
|
begin
|
228
241
|
File.rename t, file
|
229
242
|
rescue
|
230
|
-
|
243
|
+
File.delete t
|
231
244
|
end
|
232
245
|
end
|
233
246
|
|
@@ -258,13 +271,19 @@ class Funcs
|
|
258
271
|
end
|
259
272
|
|
260
273
|
|
261
|
-
def main
|
262
|
-
|
274
|
+
def main
|
275
|
+
size = ARGV.size
|
276
|
+
|
277
|
+
if size > 0
|
263
278
|
Funcs.argument_data("sub", "[sub] [arguments]", "Sub is a simple command line program that subtracts integers.\n\nFor some reason, no simple program did this.\n\nWhich is weird\n\nExample\n\nsub\n(Input)\n10\n3\n1\n\nResult =>\n\n6\n\nExample\n\n (echo 5; echo 2) | sub\n\nResult =>\n\n3")
|
264
279
|
exit 1
|
265
280
|
end
|
266
281
|
|
267
|
-
|
282
|
+
begin
|
283
|
+
sub
|
284
|
+
rescue e : Exception
|
285
|
+
puts e
|
286
|
+
end
|
268
287
|
end
|
269
288
|
|
270
289
|
|
data/src/_compilation/swap
CHANGED
@@ -1,11 +1,24 @@
|
|
1
1
|
#!/usr/bin/crystal
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
CORE_UTIL_STRING = "core_utils"
|
4
|
+
|
5
|
+
def prepend_each(arg)
|
6
|
+
STDIN.each_line do |line|
|
7
|
+
puts arg + line
|
8
|
+
end
|
7
9
|
end
|
8
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
|
9
22
|
|
10
23
|
def nth_word(arg)
|
11
24
|
i = arg.to_u64 - 1
|
@@ -20,11 +33,11 @@ def trim()
|
|
20
33
|
end
|
21
34
|
end
|
22
35
|
|
23
|
-
def lines()
|
36
|
+
def lines(folder = ".")
|
24
37
|
if !STDIN.tty?
|
25
|
-
puts STDIN.gets_to_end.count(
|
38
|
+
puts STDIN.gets_to_end.count('\n')
|
26
39
|
else
|
27
|
-
res = `find
|
40
|
+
res = `find #{folder}`.count('\n') - 1
|
28
41
|
puts res
|
29
42
|
end
|
30
43
|
end
|
@@ -155,25 +168,25 @@ end
|
|
155
168
|
def gsubip(arg1, arg2, arg3)
|
156
169
|
regex = Regex.new(arg1)
|
157
170
|
text = File.read(arg3).gsub(/#{arg1}/m, arg2)
|
158
|
-
File.open(t = File.tempname(
|
171
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
|
159
172
|
h.print text
|
160
173
|
end
|
161
174
|
begin
|
162
175
|
File.rename t, arg3
|
163
176
|
rescue
|
164
|
-
|
177
|
+
File.delete t
|
165
178
|
end
|
166
179
|
end
|
167
180
|
|
168
181
|
def rip(arg1, arg2, arg3)
|
169
182
|
text = File.read(arg3).gsub(arg1, arg2)
|
170
|
-
File.open(t = File.tempname(
|
183
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
|
171
184
|
h.print text
|
172
185
|
end
|
173
186
|
begin
|
174
187
|
File.rename t, arg3
|
175
188
|
rescue
|
176
|
-
|
189
|
+
File.delete t
|
177
190
|
end
|
178
191
|
end
|
179
192
|
|
@@ -197,7 +210,7 @@ def swap(file1, file2)
|
|
197
210
|
[file1, file2].each do |f|
|
198
211
|
File.exists?(f) || abort("No file named #{f.dump}")
|
199
212
|
end
|
200
|
-
t = File.tempname(
|
213
|
+
t = File.tempname(CORE_UTIL_STRING, "_tmp")
|
201
214
|
|
202
215
|
File.rename file1, t
|
203
216
|
File.rename file2, file1
|
@@ -207,27 +220,27 @@ end
|
|
207
220
|
def prepend(file)
|
208
221
|
file_data = File.read(file)
|
209
222
|
new_data = STDIN.gets_to_end
|
210
|
-
File.open(t = File.tempname(
|
223
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
|
211
224
|
h << new_data + file_data
|
212
225
|
end
|
213
226
|
|
214
227
|
begin
|
215
228
|
File.rename t, file
|
216
229
|
rescue
|
217
|
-
|
230
|
+
File.delete t
|
218
231
|
end
|
219
232
|
end
|
220
233
|
|
221
234
|
def append(file)
|
222
235
|
file_data = File.read(file)
|
223
236
|
new_data = STDIN.gets_to_end
|
224
|
-
File.open(t = File.tempname(
|
237
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
|
225
238
|
h << file_data + new_data
|
226
239
|
end
|
227
240
|
begin
|
228
241
|
File.rename t, file
|
229
242
|
rescue
|
230
|
-
|
243
|
+
File.delete t
|
231
244
|
end
|
232
245
|
end
|
233
246
|
|
@@ -258,13 +271,19 @@ class Funcs
|
|
258
271
|
end
|
259
272
|
|
260
273
|
|
261
|
-
def main
|
262
|
-
|
274
|
+
def main
|
275
|
+
size = ARGV.size
|
276
|
+
|
277
|
+
if size != 2
|
263
278
|
Funcs.argument_data("swap", "[swap] [arguments]", "Swaps two files\n\nExample\n\nswap text1 text2")
|
264
279
|
exit 1
|
265
280
|
end
|
266
281
|
|
267
|
-
|
282
|
+
begin
|
283
|
+
swap(ARGV[0]?, ARGV[1]?)
|
284
|
+
rescue e : Exception
|
285
|
+
puts e
|
286
|
+
end
|
268
287
|
end
|
269
288
|
|
270
289
|
|
data/src/_compilation/trim
CHANGED
@@ -1,11 +1,24 @@
|
|
1
1
|
#!/usr/bin/crystal
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
CORE_UTIL_STRING = "core_utils"
|
4
|
+
|
5
|
+
def prepend_each(arg)
|
6
|
+
STDIN.each_line do |line|
|
7
|
+
puts arg + line
|
8
|
+
end
|
7
9
|
end
|
8
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
|
9
22
|
|
10
23
|
def nth_word(arg)
|
11
24
|
i = arg.to_u64 - 1
|
@@ -20,11 +33,11 @@ def trim()
|
|
20
33
|
end
|
21
34
|
end
|
22
35
|
|
23
|
-
def lines()
|
36
|
+
def lines(folder = ".")
|
24
37
|
if !STDIN.tty?
|
25
|
-
puts STDIN.gets_to_end.count(
|
38
|
+
puts STDIN.gets_to_end.count('\n')
|
26
39
|
else
|
27
|
-
res = `find
|
40
|
+
res = `find #{folder}`.count('\n') - 1
|
28
41
|
puts res
|
29
42
|
end
|
30
43
|
end
|
@@ -155,25 +168,25 @@ end
|
|
155
168
|
def gsubip(arg1, arg2, arg3)
|
156
169
|
regex = Regex.new(arg1)
|
157
170
|
text = File.read(arg3).gsub(/#{arg1}/m, arg2)
|
158
|
-
File.open(t = File.tempname(
|
171
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
|
159
172
|
h.print text
|
160
173
|
end
|
161
174
|
begin
|
162
175
|
File.rename t, arg3
|
163
176
|
rescue
|
164
|
-
|
177
|
+
File.delete t
|
165
178
|
end
|
166
179
|
end
|
167
180
|
|
168
181
|
def rip(arg1, arg2, arg3)
|
169
182
|
text = File.read(arg3).gsub(arg1, arg2)
|
170
|
-
File.open(t = File.tempname(
|
183
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
|
171
184
|
h.print text
|
172
185
|
end
|
173
186
|
begin
|
174
187
|
File.rename t, arg3
|
175
188
|
rescue
|
176
|
-
|
189
|
+
File.delete t
|
177
190
|
end
|
178
191
|
end
|
179
192
|
|
@@ -197,7 +210,7 @@ def swap(file1, file2)
|
|
197
210
|
[file1, file2].each do |f|
|
198
211
|
File.exists?(f) || abort("No file named #{f.dump}")
|
199
212
|
end
|
200
|
-
t = File.tempname(
|
213
|
+
t = File.tempname(CORE_UTIL_STRING, "_tmp")
|
201
214
|
|
202
215
|
File.rename file1, t
|
203
216
|
File.rename file2, file1
|
@@ -207,27 +220,27 @@ end
|
|
207
220
|
def prepend(file)
|
208
221
|
file_data = File.read(file)
|
209
222
|
new_data = STDIN.gets_to_end
|
210
|
-
File.open(t = File.tempname(
|
223
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
|
211
224
|
h << new_data + file_data
|
212
225
|
end
|
213
226
|
|
214
227
|
begin
|
215
228
|
File.rename t, file
|
216
229
|
rescue
|
217
|
-
|
230
|
+
File.delete t
|
218
231
|
end
|
219
232
|
end
|
220
233
|
|
221
234
|
def append(file)
|
222
235
|
file_data = File.read(file)
|
223
236
|
new_data = STDIN.gets_to_end
|
224
|
-
File.open(t = File.tempname(
|
237
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
|
225
238
|
h << file_data + new_data
|
226
239
|
end
|
227
240
|
begin
|
228
241
|
File.rename t, file
|
229
242
|
rescue
|
230
|
-
|
243
|
+
File.delete t
|
231
244
|
end
|
232
245
|
end
|
233
246
|
|
@@ -258,13 +271,19 @@ class Funcs
|
|
258
271
|
end
|
259
272
|
|
260
273
|
|
261
|
-
def main
|
262
|
-
|
274
|
+
def main
|
275
|
+
size = ARGV.size
|
276
|
+
|
277
|
+
if size > 0
|
263
278
|
Funcs.argument_data("trim", "[trim] [arguments]", "Trims spaces of each line")
|
264
279
|
exit 1
|
265
280
|
end
|
266
281
|
|
267
|
-
|
282
|
+
begin
|
283
|
+
trim
|
284
|
+
rescue e : Exception
|
285
|
+
puts e
|
286
|
+
end
|
268
287
|
end
|
269
288
|
|
270
289
|
|
Binary file
|
data/src/programs/lines
CHANGED
Binary file
|
Binary file
|
data/src/rgsub
CHANGED
Binary file
|
data/src/rgsub.c
CHANGED
@@ -274,19 +274,19 @@ static void process_file(const char *restrict filename,
|
|
274
274
|
}
|
275
275
|
}
|
276
276
|
|
277
|
-
static void process_directory(const char *
|
277
|
+
static void process_directory(const char *directory_path, const char *one,
|
278
278
|
const char *two, bool check_file) {
|
279
|
-
if (strstr(
|
279
|
+
if (strstr(directory_path, "/.")) {
|
280
280
|
// printf("Skipping hidden file '%s'\n", filename);
|
281
281
|
return;
|
282
282
|
}
|
283
|
-
DIR *dir = opendir(
|
283
|
+
DIR *dir = opendir(directory_path);
|
284
284
|
if (dir == NULL) {
|
285
285
|
if (check_file) {
|
286
|
-
process_file(
|
286
|
+
process_file(directory_path, one, two);
|
287
287
|
return;
|
288
288
|
}
|
289
|
-
printf("Failed to open directory: '%s'\n",
|
289
|
+
printf("Failed to open directory: '%s'\n", directory_path);
|
290
290
|
return;
|
291
291
|
}
|
292
292
|
|
@@ -296,35 +296,34 @@ static void process_directory(const char *dirPath, const char *one,
|
|
296
296
|
continue;
|
297
297
|
|
298
298
|
char path[PATH_MAX];
|
299
|
-
snprintf(path, sizeof(path), "%s/%s",
|
300
|
-
|
301
|
-
if (rename_mode) {
|
302
|
-
bool use_orig;
|
303
|
-
size_t num_matches;
|
304
|
-
char *new_text;
|
305
|
-
|
306
|
-
string_replace(path, one, two, strlen(path), strlen(one), strlen(two),
|
307
|
-
&use_orig, &num_matches, &new_text);
|
308
|
-
|
309
|
-
if (use_orig)
|
310
|
-
continue;
|
311
|
-
printf("%s: Renamed %s => %s\n", prog_name, path, new_text);
|
312
|
-
|
313
|
-
rename(path, new_text);
|
314
|
-
free(new_text);
|
315
|
-
continue;
|
316
|
-
}
|
299
|
+
snprintf(path, sizeof(path), "%s/%s", directory_path, entry->d_name);
|
317
300
|
|
318
301
|
struct stat statbuf;
|
319
302
|
if (stat(path, &statbuf) == -1) {
|
320
303
|
printf("Failed to get file information: %s\n", path);
|
321
304
|
continue;
|
322
305
|
}
|
323
|
-
|
306
|
+
|
324
307
|
if (S_ISDIR(statbuf.st_mode)) {
|
325
308
|
process_directory(path, one, two, false);
|
326
309
|
} else if (S_ISREG(statbuf.st_mode)) {
|
327
|
-
|
310
|
+
if (unlikely(rename_mode)) {
|
311
|
+
bool use_orig;
|
312
|
+
size_t num_matches;
|
313
|
+
char *new_text;
|
314
|
+
|
315
|
+
string_replace(path, one, two, strlen(path), len1, len2, &use_orig,
|
316
|
+
&num_matches, &new_text);
|
317
|
+
if (use_orig)
|
318
|
+
continue;
|
319
|
+
|
320
|
+
printf("%s: Renamed %s => %s\n", prog_name, path, new_text);
|
321
|
+
|
322
|
+
rename(path, new_text);
|
323
|
+
free(new_text);
|
324
|
+
} else {
|
325
|
+
process_file(path, one, two);
|
326
|
+
}
|
328
327
|
}
|
329
328
|
}
|
330
329
|
|
data/src/src/Makefile
CHANGED
data/src/src/cd
ADDED
data/src/src/code
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
1
4
|
require "fileutils"
|
2
5
|
|
3
6
|
txt = "$array = {"
|
@@ -20,33 +23,51 @@ def iter(arg)
|
|
20
23
|
FileUtils.mkdir_p("../_compilation")
|
21
24
|
name, args = arg.scan(/^def\s+(.+)(\(.*\))\s*$/)[0]
|
22
25
|
args_split = args[1..-2].strip.split(",")
|
26
|
+
if name == "lines"
|
27
|
+
#abort args_split.to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
optional = args.count '='
|
31
|
+
len = args_split.length
|
32
|
+
|
33
|
+
min = len - optional
|
34
|
+
max = len
|
35
|
+
|
23
36
|
invoke_function = if args_split.empty?
|
24
37
|
name
|
25
38
|
else
|
26
|
-
"#{name}(#{["", "ARGV[0]", "ARGV[0]
|
27
|
-
"ARGV[0]
|
39
|
+
"#{name}(#{["", "ARGV[0]?", "ARGV[0]?, ARGV[1]?",
|
40
|
+
"ARGV[0]?, ARGV[1]?, ARGV[2]?"][len]})"
|
28
41
|
end
|
29
42
|
|
30
43
|
File.open("../_compilation/#{name}", "w") do |file|
|
44
|
+
cond = if min == 0
|
45
|
+
"size > #{max}"
|
46
|
+
elsif min == max; "size != #{max}"
|
47
|
+
else
|
48
|
+
"size < #{min} || size > #{max}"
|
49
|
+
end
|
31
50
|
file << (File.read("functions.cr")) << text = <<CR
|
32
51
|
|
33
52
|
|
34
|
-
def main
|
35
|
-
|
53
|
+
def main
|
54
|
+
size = ARGV.size
|
55
|
+
|
56
|
+
if #{cond}
|
36
57
|
Funcs.argument_data(#{$array[name].to_s[1..-2]})
|
37
58
|
exit 1
|
38
59
|
end
|
39
60
|
|
40
|
-
|
61
|
+
begin
|
62
|
+
#{invoke_function}
|
63
|
+
rescue e : Exception
|
64
|
+
puts e
|
65
|
+
end
|
41
66
|
end
|
42
67
|
|
43
68
|
|
44
69
|
main
|
45
70
|
CR
|
46
|
-
#abort text
|
47
|
-
|
48
|
-
#START
|
49
|
-
system "#notify-send #&"
|
50
71
|
end
|
51
72
|
end
|
52
73
|
|
data/src/src/functions.cr
CHANGED
@@ -1,11 +1,24 @@
|
|
1
1
|
#!/usr/bin/crystal
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
CORE_UTIL_STRING = "core_utils"
|
4
|
+
|
5
|
+
def prepend_each(arg)
|
6
|
+
STDIN.each_line do |line|
|
7
|
+
puts arg + line
|
8
|
+
end
|
7
9
|
end
|
8
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
|
9
22
|
|
10
23
|
def nth_word(arg)
|
11
24
|
i = arg.to_u64 - 1
|
@@ -20,11 +33,11 @@ def trim()
|
|
20
33
|
end
|
21
34
|
end
|
22
35
|
|
23
|
-
def lines()
|
36
|
+
def lines(folder = ".")
|
24
37
|
if !STDIN.tty?
|
25
|
-
puts STDIN.gets_to_end.count(
|
38
|
+
puts STDIN.gets_to_end.count('\n')
|
26
39
|
else
|
27
|
-
res = `find
|
40
|
+
res = `find #{folder}`.count('\n') - 1
|
28
41
|
puts res
|
29
42
|
end
|
30
43
|
end
|
@@ -155,25 +168,25 @@ end
|
|
155
168
|
def gsubip(arg1, arg2, arg3)
|
156
169
|
regex = Regex.new(arg1)
|
157
170
|
text = File.read(arg3).gsub(/#{arg1}/m, arg2)
|
158
|
-
File.open(t = File.tempname(
|
171
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
|
159
172
|
h.print text
|
160
173
|
end
|
161
174
|
begin
|
162
175
|
File.rename t, arg3
|
163
176
|
rescue
|
164
|
-
|
177
|
+
File.delete t
|
165
178
|
end
|
166
179
|
end
|
167
180
|
|
168
181
|
def rip(arg1, arg2, arg3)
|
169
182
|
text = File.read(arg3).gsub(arg1, arg2)
|
170
|
-
File.open(t = File.tempname(
|
183
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(arg3).permissions) do |h|
|
171
184
|
h.print text
|
172
185
|
end
|
173
186
|
begin
|
174
187
|
File.rename t, arg3
|
175
188
|
rescue
|
176
|
-
|
189
|
+
File.delete t
|
177
190
|
end
|
178
191
|
end
|
179
192
|
|
@@ -197,7 +210,7 @@ def swap(file1, file2)
|
|
197
210
|
[file1, file2].each do |f|
|
198
211
|
File.exists?(f) || abort("No file named #{f.dump}")
|
199
212
|
end
|
200
|
-
t = File.tempname(
|
213
|
+
t = File.tempname(CORE_UTIL_STRING, "_tmp")
|
201
214
|
|
202
215
|
File.rename file1, t
|
203
216
|
File.rename file2, file1
|
@@ -207,27 +220,27 @@ end
|
|
207
220
|
def prepend(file)
|
208
221
|
file_data = File.read(file)
|
209
222
|
new_data = STDIN.gets_to_end
|
210
|
-
File.open(t = File.tempname(
|
223
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
|
211
224
|
h << new_data + file_data
|
212
225
|
end
|
213
226
|
|
214
227
|
begin
|
215
228
|
File.rename t, file
|
216
229
|
rescue
|
217
|
-
|
230
|
+
File.delete t
|
218
231
|
end
|
219
232
|
end
|
220
233
|
|
221
234
|
def append(file)
|
222
235
|
file_data = File.read(file)
|
223
236
|
new_data = STDIN.gets_to_end
|
224
|
-
File.open(t = File.tempname(
|
237
|
+
File.open(t = File.tempname(CORE_UTIL_STRING, "_tmp"), "w", File.info(file).permissions) do |h|
|
225
238
|
h << file_data + new_data
|
226
239
|
end
|
227
240
|
begin
|
228
241
|
File.rename t, file
|
229
242
|
rescue
|
230
|
-
|
243
|
+
File.delete t
|
231
244
|
end
|
232
245
|
end
|
233
246
|
|