markdown_exec 1.8.7 → 1.8.8

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.
data/lib/method_sorter.rb DELETED
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'ripper'
4
- require 'parser/current'
5
-
6
- class MethodSorter
7
- def initialize(file_path)
8
- @file_path = file_path
9
- end
10
-
11
- def sort
12
- file_contents = File.read(@file_path)
13
-
14
- ast = Parser::CurrentRuby.parse(file_contents)
15
-
16
- # Find the class node
17
- class_node = ast.children.find { |node| node.type == :class }
18
-
19
- method_nodes = []
20
-
21
- # Look for method def nodes within each child node
22
- class_node.children.compact.each do |child|
23
- if child.type == :begin
24
- method_nodes += child.children.select { |n| n.type == :def }
25
- end
26
- end
27
-
28
- # Sort and process method nodes
29
- # class_node = ast.children.find { |node| node.type == :class }
30
- # unless class_node
31
- # puts "No class node found in #{@file_path}"
32
- # return
33
- # end
34
-
35
- # method_nodes = class_node.children.compact.select { |node|
36
- # node.type == :def
37
- # }
38
-
39
- sorted_methods = method_nodes.sort_by { |n| n.children[0].to_s }
40
- ripper = Ripper.sexp(file_contents)
41
- lines = ripper.each_with_index.map { |sexp, index| [sexp, index] }
42
-
43
- method_ranges = get_method_ranges(lines, method_nodes)
44
-
45
- result = replace_method_ranges(lines, method_ranges, sorted_methods)
46
-
47
- puts result.compact.select { |v| v.is_a? String }.join("\n")
48
- # File.write(@file_path, result.join)
49
- end
50
-
51
- private
52
-
53
- def get_method_ranges(lines, method_nodes)
54
- method_nodes.map do |method_node|
55
- start_line = method_node.loc.line - 1
56
- end_line = start_line
57
-
58
- while end_line < lines.size && lines[end_line][0] !~ /^end/
59
- end_line += 1
60
- end
61
-
62
- (start_line..end_line)
63
- end
64
- end
65
-
66
- def replace_method_ranges(lines, ranges, sorted_methods)
67
- result = lines.dup
68
-
69
- ranges.each_with_index do |range, index|
70
- result[range] = sorted_methods[index].loc.expression.source.split("\n")
71
- end
72
-
73
- result
74
- end
75
- end
76
-
77
- sorter = MethodSorter.new(ARGV[0])
78
- sorter.sort
data/lib/pty1.rb DELETED
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'pty'
4
-
5
- def launch_and_interact_with_terminal
6
- PTY.spawn('bash') do |stdout, stdin, _pid|
7
- # Send a command to the terminal
8
- stdin.puts "echo 'Hello from Ruby!'"
9
-
10
- # Read the output of the command
11
- stdout.each do |line|
12
- puts line
13
- break if line.include?('Hello from Ruby!')
14
- end
15
-
16
- # You can continue to interact with the terminal here
17
- # ...
18
-
19
- # Ensure to exit the spawned shell
20
- stdin.puts 'exit'
21
- end
22
- rescue PTY::ChildExited
23
- puts 'The child process exited!'
24
- end
25
-
26
- launch_and_interact_with_terminal
@@ -1,58 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- # encoding=utf-8
5
-
6
- require 'find'
7
-
8
- class RegexpReplacer
9
- # Constructor to initialize with file path
10
- def initialize(file_path)
11
- @file_path = file_path
12
- end
13
-
14
- # Perform the replacement based on the specified option
15
- def perform_replacement(option)
16
- content = File.read(@file_path)
17
- modified_content = case option
18
- when 'v'
19
- verbose(content)
20
- when 'q'
21
- quiet(content)
22
- else
23
- raise "Invalid option. Please choose 'v' or 'q'."
24
- end
25
- File.write(@file_path, modified_content)
26
- end
27
-
28
- private
29
-
30
- # Replacement for pattern 'v'
31
- def verbose(content)
32
- regexp = /^( *)# (&\w+) ('.+)/
33
- substitution = '\1;;pp [__LINE__,\3] #\2'
34
- content.gsub(regexp, substitution)
35
- end
36
-
37
- # Replacement for pattern 'q'
38
- def quiet(content)
39
- regexp = /^( *);; ?pp \[__LINE__,(.+)\] #(&\w+)/
40
- substitution = '\1# \3 \2'
41
- content.gsub(regexp, substitution)
42
- end
43
- end
44
-
45
- # Running the script with command line arguments
46
- if ARGV.length != 2
47
- puts "Usage: ruby regexp_replacer.rb [file_path] [option ('v' or 'q')]"
48
- exit
49
- end
50
-
51
- file_path, option = ARGV
52
- replacer = RegexpReplacer.new(file_path)
53
- begin
54
- replacer.perform_replacement(option)
55
- puts "Replacement performed successfully."
56
- rescue StandardError => e
57
- puts "Error: #{e.message}"
58
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'yaml'
4
-
5
- def sort_yaml(input_yaml)
6
- # Parse the input YAML
7
- data = YAML.load(input_yaml)
8
-
9
- # Ensure data is an array of hashes
10
- unless data.is_a?(Array) && data.all? { |item| item.is_a?(Hash) }
11
- raise ArgumentError, 'Input YAML must be an array of hashes.'
12
- end
13
-
14
- # Sort items by 'opt_name' values
15
- sorted_data = data.sort_by do |item|
16
- (item[:opt_name] || item[:long_name] || item[:short_name]).to_s
17
- end
18
-
19
- # Sort keys in each item
20
- sorted_data.each do |item|
21
- item.replace(item.sort.to_h)
22
- end
23
-
24
- # Convert the sorted data back to YAML and write to stdout
25
- puts YAML.dump(sorted_data).gsub("\n-", "\n\n-")
26
- end
27
-
28
- # Read YAML from stdin
29
- input_yaml = $stdin.read
30
-
31
- # Call the function with input YAML
32
- sort_yaml(input_yaml)