fOOrth 0.6.7 → 0.6.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1374c4bba58032a13a910d7b284ef79fcb512837
4
- data.tar.gz: 5c60e71d86f800551b0041c5f8afa4c75e8b87a8
3
+ metadata.gz: 0b26e1b244da5adaa8fc5c44878adf0a23b1f066
4
+ data.tar.gz: 0d6f3fcc299062f5a1729a0fb11612e7c6744825
5
5
  SHA512:
6
- metadata.gz: 2d4ee24f67b5268c8976acfd83f54604ef65aef74c648507fed2356a7f5afe2025480314c9708b9bc5782507d98f671f1c5504523142f31d11364ba1ed8ed28e
7
- data.tar.gz: aa223c7aff3c0f0a5bfb60b365f8bf7f6596889e071d9333ed7dc44f583edf79cd9e8ae7c5372d26f38ecc2bd179e39bba169d340e2e7a5a155be90bfb04530a
6
+ metadata.gz: ee1b60bcd99441e124425f06ed89d3a1dbdfd30905b1cc6898833f47323c52a6a6d1163730604c758a017c7a0174275a53e2d73e20d2ec0d6b8157bf2fb2a95f
7
+ data.tar.gz: 96115428006a4d71003c6060239814debcf44c57aae4627287ceb0ec5377a68f85da6d8a8dd38b886aea912f965b2124b769c41993134dff18eaf81e3a967aec
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at peter.c.camilleri@gmail.com. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
@@ -36,5 +36,5 @@ Gem::Specification.new do |spec|
36
36
  spec.add_runtime_dependency 'full_clone'
37
37
  spec.add_runtime_dependency 'safe_clone'
38
38
  spec.add_runtime_dependency 'in_array'
39
- spec.add_runtime_dependency 'mini_readline', ">= 0.4.8"
39
+ spec.add_runtime_dependency 'mini_readline', ">= 0.7.0"
40
40
  end
@@ -49,4 +49,66 @@ class StdioLibraryTester < Minitest::Test
49
49
  foorth_raises('1+1i .emit')
50
50
  end
51
51
 
52
+ #Looks like some unit testing has crept into integration testing. OK.
53
+ def test_some_formatting
54
+ assert_equal("1 4\n2 5\n3 ", [1,2,3,4,5].format_foorth_columns(false, 5))
55
+ assert_equal(["1 4", "2 5", "3 "], [1,2,3,4,5].format_description(5))
56
+
57
+ assert_equal(["1 2", "3 4", "5"], "1 2 3 4 5".format_description(5))
58
+
59
+ assert_equal([], [].format_description(5))
60
+ assert_equal([], nil.format_description(5))
61
+
62
+ result =
63
+ "1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 \n" +
64
+ "2 6 10 14 18 22 26 30 34 38 42 46 50 54 58 62 66 70 74 78 82 86 90 94 98 \n" +
65
+ "3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83 87 91 95 99 \n" +
66
+ "4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100"
67
+
68
+ assert_equal(result, (1..100).to_a.format_foorth_columns(false, 80) )
69
+
70
+ data =
71
+ [["key_largo", "/long_folder_name_one/long_folder_name_two/long_folder_name_three/fine_descriptive_name"],
72
+ ["key_west", "Semper ubi sub ubi. Semper ubi sub ubi. Semper ubi sub ubi. Semper ubi sub ubi. "],
73
+ ["counting", Array.new(100) {|i| i} ],
74
+ ["pie", Math::PI]
75
+ ]
76
+
77
+ result =
78
+ "key_largo /long_folder_name_one/long_folder_name_two/long_folder_name_three/fin\n" +
79
+ " e_descriptive_name\n" +
80
+ "key_west Semper ubi sub ubi. Semper ubi sub ubi. Semper ubi sub ubi. Semper\n" +
81
+ " ubi sub ubi.\n" +
82
+ "counting 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95\n" +
83
+ " 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96\n" +
84
+ " 2 7 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97\n" +
85
+ " 3 8 13 18 23 28 33 38 43 48 53 58 63 68 73 78 83 88 93 98\n" +
86
+ " 4 9 14 19 24 29 34 39 44 49 54 59 64 69 74 79 84 89 94 99\n" +
87
+ "pie 3.141592653589793"
88
+
89
+ assert_equal(result, data.foorth_format_bullets(80))
90
+
91
+ assert_equal("", [].foorth_format_bullets(80))
92
+
93
+
94
+ data =
95
+ {"key_largo" => "/long_folder_name_one/long_folder_name_two/long_folder_name_three/fine_descriptive_name",
96
+ "key_west" => "Semper ubi sub ubi. Semper ubi sub ubi. Semper ubi sub ubi. Semper ubi sub ubi. ",
97
+ "counting" => Array.new(100) {|i| i},
98
+ "pie" => Math::PI
99
+ }
100
+
101
+ assert_equal(result, data.foorth_format_bullets(80))
102
+
103
+ end
104
+
105
+ def test_formatting_some_more
106
+ foorth_run('5 $chars_per_line !')
107
+ foorth_equal('[ 1 2 3 4 5 ] .format_columns', ["1 4\n2 5\n3 "])
108
+
109
+ foorth_run('80 $chars_per_line !')
110
+ foorth_equal('[ [ 1 "apple" ] [ 2 "cherry" ] [ 3 "prune" ] ] .format_bullets',
111
+ ["1 apple\n2 cherry\n3 prune"])
112
+ end
113
+
52
114
  end
@@ -71,13 +71,24 @@ class ThreadLibraryTester < Minitest::Test
71
71
  foorth_run('$tmtx .lock $tmtx .unlock ')
72
72
  foorth_equal('$tmtx .do{{ 3 4 + }}', [7])
73
73
 
74
- foorth_run('""* val$: $tmtx_str')
75
- foorth_equal('{{ $tmtx .do{{ 0 10 do $tmtx_str "@" << loop }} }} ' +
76
- '.start drop $tmtx .do{{ $tmtx_str }} ', ["@"*10])
74
+ code = ': test_mutex_one ' +
75
+ '{{ $tmtx .do{{ 0 10 do $tmtx_str "@" << loop }} }} .start drop ' +
76
+ 'begin $tmtx .do{{ $tmtx_str }} "" = while again $tmtx_str ;'
77
77
 
78
78
  foorth_run('""* val$: $tmtx_str')
79
- foorth_equal('{{ Mutex .do{{ 0 10 do $tmtx_str "@" << loop }} }} ' +
80
- '.start drop Mutex .do{{ $tmtx_str }} ', ["@"*10])
79
+ foorth_run(code)
80
+
81
+ 10.times do
82
+ foorth_equal('""* val$: $tmtx_str test_mutex_one', ["@"*10])
83
+ end
84
+
85
+ code = '{{ Mutex .do{{ 0 10 do $tmtx_str "@" << loop }} }} .start drop ' +
86
+ 'begin Mutex .do{{ $tmtx_str }} "" = while again $tmtx_str'
87
+
88
+ 10.times do
89
+ foorth_run('""* val$: $tmtx_str')
90
+ foorth_equal(code, ["@"*10])
91
+ end
81
92
  end
82
93
 
83
94
  end
@@ -10,8 +10,6 @@ require 'ruby_sscanf'
10
10
  require 'English'
11
11
 
12
12
  require 'pp'
13
-
14
- $no_alias_read_line_module = true
15
13
  require 'mini_readline'
16
14
 
17
15
  require_relative 'fOOrth/version'
@@ -0,0 +1,81 @@
1
+ # coding: utf-8
2
+
3
+ #* library/formatting/array.rb - Array support for displaying data formatted neatly.
4
+ class Array
5
+
6
+ # Columns ========================================================
7
+
8
+ #Print out the array with efficient columns.
9
+ def puts_foorth_columns(page_length, page_width)
10
+ format_foorth_pages(page_length, page_width).each do |page|
11
+ puts page, ""
12
+ end
13
+ end
14
+
15
+ #Convert the array to strings with efficient columns.
16
+ #<br>Returns
17
+ #* A string.
18
+ def format_foorth_columns(page_length, page_width)
19
+ format_foorth_pages(page_length, page_width)
20
+ .map {|page| page << ""}
21
+ .flatten[0...-1]
22
+ .join("\n")
23
+ .freeze
24
+ end
25
+
26
+ #Get the widest element of an array.
27
+ #<br>Returns
28
+ #* The width of the widest string in the array.
29
+ def foorth_column_width
30
+ (self.max_by {|item| item.length}).length
31
+ end
32
+
33
+ private
34
+
35
+ #Convert the array to strings with efficient columns.
36
+ #<br>Returns
37
+ #* An array of pages (arrays of strings)
38
+ def format_foorth_pages(page_length, page_width)
39
+ index, pages, limit = 0, [], self.length
40
+ builder = XfOOrth::ColumnizedPage.new(page_length, page_width)
41
+
42
+ while index < limit
43
+ index += 1 - (left_over = builder.add(self[index]))
44
+ pages << builder.render if (left_over > 0) || (index == limit)
45
+ end
46
+
47
+ pages
48
+ end
49
+
50
+ # Bullets ========================================================
51
+
52
+ public
53
+
54
+ #Print out the array as bullet points.
55
+ def puts_foorth_bullets
56
+ puts foorth_format_bullets
57
+ end
58
+
59
+ #Convert the array to strings with bullet points.
60
+ #<br>Returns
61
+ #* A string
62
+ def foorth_format_bullets(page_width)
63
+ return "" if empty?
64
+
65
+ builder = XfOOrth::BulletPoints.new(page_width)
66
+
67
+ self.each do |pair|
68
+ builder.add(*pair)
69
+ end
70
+
71
+ builder.render.join("\n").freeze
72
+ end
73
+
74
+ #Convert the array to a bullet point description.
75
+ #<br>Returns
76
+ #* An array of strings.
77
+ def format_description(page_width)
78
+ format_foorth_pages(false, page_width)[0] || []
79
+ end
80
+
81
+ end
@@ -5,32 +5,22 @@ module XfOOrth
5
5
 
6
6
  #A class to display data in bullet points.
7
7
  class BulletPoints
8
+
8
9
  #Prepare a blank slate.
9
10
  def initialize(page_width)
10
- @page_width, @bullet_data = page_width, []
11
+ @page_width = page_width
12
+ @bullet_data = []
11
13
  end
12
14
 
13
- #Add an item to this page.
14
- #<br>Returns
15
- #* The number if items that did not fit in the page.
16
- #<br>Endemic Code Smells
17
- #* :reek:FeatureEnvy
18
- def add(raw_bullet = "*", *raw_item)
19
-
20
- if raw_item.empty?
21
- bullet = ["*"]
22
- items = raw_bullet.in_array
23
- else
24
- bullet = [raw_bullet]
25
- items = raw_item.in_array
26
- end
27
-
28
- items.each_index do |index|
29
- @bullet_data << [(bullet[index] || "").to_s, items[index].to_s]
15
+ #Add items to these bullet points.
16
+ def add(bullet, *items)
17
+ items.each do |item|
18
+ @bullet_data << [bullet.to_s, item]
19
+ bullet = ""
30
20
  end
31
21
  end
32
22
 
33
- #Render the page as an array of strings.
23
+ #Render the bullet points as an array of strings.
34
24
  def render
35
25
  @key_length, results = get_key_length, []
36
26
 
@@ -44,88 +34,24 @@ module XfOOrth
44
34
 
45
35
  private
46
36
 
47
- #How large is the largest bullet?
37
+ #Allowing for a trailing space, how large is the largest bullet?
48
38
  def get_key_length
49
- (@bullet_data.max_by {|line| line[0].length})[0].length
39
+ (@bullet_data.max_by {|line| line[0].length})[0].length + 1
50
40
  end
51
41
 
52
42
  #Render one bullet point.
53
- #<br>Endemic Code Smells
54
- #* :reek:DuplicateMethodCall :reek:TooManyStatements
55
43
  def render_bullet(key, item)
56
- result, pass_one = [], true
57
- input = item.split(' ').each
58
- temp = key.ljust(len = @key_length)
59
-
60
- loop do
61
- word = ' ' + input.next
44
+ result = []
62
45
 
63
- while len >= @page_width
64
- result << temp.slice!(0, @page_width - 1)
65
- temp = blank_key + ' ' + temp
66
- len = temp.length
67
- end
68
-
69
- if ((len += word.length) >= @page_width) && !pass_one
70
- result << temp
71
- temp = blank_key + word
72
- len = temp.length
73
- else
74
- temp << word
75
- pass_one = false
76
- end
46
+ item.format_description(@page_width - @key_length - 1).each do |desc_line|
47
+ result << key.ljust(@key_length) + desc_line
48
+ key = ""
77
49
  end
78
50
 
79
- result << temp
80
- end
81
-
82
- #Generate a blank bullet key
83
- def blank_key
84
- ' ' * @key_length
51
+ result
85
52
  end
86
53
 
87
54
  end
88
55
 
89
56
  end
90
57
 
91
- #Bullet point support in the Array class.
92
- class Array
93
- #Print out the array as bullet points.
94
- def puts_foorth_bullets(page_width)
95
- puts foorth_bulletize(page_width)
96
- end
97
-
98
- #Convert the array to strings with bullet points.
99
- #<br>
100
- #* An array of arrays of strings
101
- def foorth_bulletize(page_width)
102
- builder = XfOOrth::BulletPoints.new(page_width)
103
-
104
- self.each do |pair|
105
- builder.add(*pair)
106
- end
107
-
108
- builder.render
109
- end
110
- end
111
-
112
- #Bullet point support in the Hash class.
113
- class Hash
114
- #Print out the hash as bullet points.
115
- def puts_foorth_bullets(page_width)
116
- puts foorth_bulletize(page_width)
117
- end
118
-
119
- #Convert the hash to strings with bullet points.
120
- #<br>
121
- #* An array of arrays of strings
122
- def foorth_bulletize(page_width)
123
- builder = XfOOrth::BulletPoints.new(page_width)
124
-
125
- self.each do |key, value|
126
- builder.add(key, *value.in_array)
127
- end
128
-
129
- builder.render
130
- end
131
- end
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- #* library/formatting/columns.rb - Print out data in columns.
3
+ #* library/formatting/bullets.rb - Print out data in neat columns.
4
4
  module XfOOrth
5
5
 
6
6
  #A class to display data in columns.
@@ -18,8 +18,8 @@ module XfOOrth
18
18
  item = raw_item.to_s
19
19
  fail "Item too large to fit." unless item.length < @page_width
20
20
 
21
- if (slot = find_next_column)
22
- @page_data[slot] << item
21
+ if (column = find_next_column)
22
+ @page_data[column] << item
23
23
  else
24
24
  @page_data << [item]
25
25
  end
@@ -28,24 +28,29 @@ module XfOOrth
28
28
  end
29
29
 
30
30
  #Render the page as an array of strings.
31
- #<br>Endemic Code Smells
32
- #* :reek:NestedIterators :reek:TooManyStatements
33
31
  def render
34
- results = []
35
- widths = @page_data.map {|column| column.foorth_column_width}
32
+ results, column_widths = [], get_column_widths
36
33
 
37
- (0...rows).each do |column_index|
38
- results << @page_data.each_with_index.map do |column, index|
39
- column[column_index].to_s.ljust(widths[index])
40
- end.join(" ").freeze
41
- end
34
+ rows.times { |row_index| results << render_row(row_index, column_widths)}
42
35
 
43
- @page_data = []
36
+ @page_data.clear
44
37
  results
45
38
  end
46
39
 
47
40
  private
48
41
 
42
+ #Get the widths of all columns
43
+ def get_column_widths
44
+ @page_data.map {|column| column.foorth_column_width}
45
+ end
46
+
47
+ #Render a single row of data.
48
+ def render_row(row_index, widths)
49
+ @page_data.each_with_index.map do |column, index|
50
+ column[row_index].to_s.ljust(widths[index])
51
+ end.join(" ")
52
+ end
53
+
49
54
  #Make sure the page fits within its boundaries.
50
55
  #<br>Returns
51
56
  #* The number if items that did not fit in the page.
@@ -76,6 +81,8 @@ module XfOOrth
76
81
  if empty?
77
82
  0
78
83
  else
84
+ #The starting point, @page_data.length-1, represents the spaces needed
85
+ #between the columns. So N columns means N-1 spaces.
79
86
  @page_data.inject(@page_data.length-1) do |sum, column|
80
87
  sum + column.foorth_column_width
81
88
  end
@@ -113,34 +120,3 @@ module XfOOrth
113
120
 
114
121
  end
115
122
 
116
- #Support for displaying an array in neat columns.
117
- class Array
118
- #Print out the array with efficient columns.
119
- def puts_foorth_columnized(page_length, page_width)
120
- foorth_columnize(page_length, page_width).each do |page|
121
- puts page
122
- puts
123
- end
124
- end
125
-
126
- #Convert the array to strings with efficient columns.
127
- #<br>
128
- #* An array of arrays of strings
129
- def foorth_columnize(page_length, page_width)
130
- index, pages, limit = 0, [], self.length
131
- builder = XfOOrth::ColumnizedPage.new(page_length, page_width)
132
-
133
- while index < limit
134
- index += 1 - (left_over = builder.add(self[index]))
135
- pages << builder.render if (left_over > 0) || (index == limit)
136
- end
137
-
138
- pages
139
- end
140
-
141
- #Get the widest element of an array.
142
- def foorth_column_width
143
- (self.max_by {|item| item.length}).length
144
- end
145
- end
146
-
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+
3
+ #* library/formatting/hash.rb - Hash support for displaying data formatted neatly.
4
+ class Hash
5
+
6
+ # Bullets ========================================================
7
+
8
+ #Print out the array as bullet points.
9
+ def puts_foorth_bullets
10
+ puts foorth_format_bullets
11
+ end
12
+
13
+ #Convert the array to strings with bullet points.
14
+ #<br>Returns
15
+ #* A string.
16
+ def foorth_format_bullets(page_width)
17
+ return "" if empty?
18
+
19
+ builder = XfOOrth::BulletPoints.new(page_width)
20
+
21
+ self.each do |pair|
22
+ builder.add(*pair)
23
+ end
24
+
25
+ builder.render.join("\n").freeze
26
+ end
27
+
28
+ end
29
+
@@ -0,0 +1,13 @@
1
+ # coding: utf-8
2
+
3
+ #* library/formatting/nil.rb - Support for displaying nothing formatted neatly.
4
+ class NilClass
5
+
6
+ #Create a bullet point description from nothing.
7
+ def format_description(_max_width)
8
+ []
9
+ end
10
+
11
+ end
12
+
13
+
@@ -0,0 +1,13 @@
1
+ # coding: utf-8
2
+
3
+ #* library/formatting/object.rb - Support for displaying data formatted neatly.
4
+ class Object
5
+
6
+ #Create a bullet point description from this object.
7
+ def format_description(max_width)
8
+ self.to_s.format_description(max_width)
9
+ end
10
+
11
+ end
12
+
13
+
@@ -0,0 +1,46 @@
1
+ # coding: utf-8
2
+
3
+ #* library/formatting/string.rb - Support for displaying data formatted neatly.
4
+ class String
5
+
6
+ #Create a bullet point description from this string.
7
+ def format_description(max_width)
8
+ do_format_description(split(' ').each, max_width)
9
+ end
10
+
11
+ #Do the formatting legwork.
12
+ def do_format_description(input, max_width)
13
+ result, build = [], ""
14
+
15
+ loop do
16
+ build = build.split_if_over(input.next, max_width, result)
17
+ .split_if_huge(max_width, result)
18
+ end
19
+
20
+ result << build
21
+ end
22
+
23
+ #Split if adding a word goes over a little.
24
+ def split_if_over(word, max_width, buffer)
25
+ word.prepend(" ") unless self.empty?
26
+ word_len = word.length
27
+
28
+ if (length + word_len) >= max_width && word_len < max_width
29
+ buffer << self
30
+ word.lstrip
31
+ else
32
+ self + word
33
+ end
34
+
35
+ end
36
+
37
+ #Split up a overlong blob of text.
38
+ def split_if_huge(max_width, buffer)
39
+ while length >= max_width
40
+ buffer << slice!(0, max_width)
41
+ end
42
+
43
+ self
44
+ end
45
+ end
46
+
@@ -1,6 +1,11 @@
1
1
  # coding: utf-8
2
2
 
3
3
  #Load up some pretty printing support.
4
+ require_relative 'formatting/nil'
5
+ require_relative 'formatting/object'
6
+ require_relative 'formatting/string'
7
+ require_relative 'formatting/array'
8
+ require_relative 'formatting/hash'
4
9
  require_relative 'formatting/columns'
5
10
  require_relative 'formatting/bullets'
6
11
 
@@ -65,7 +70,7 @@ module XfOOrth
65
70
 
66
71
  symbol = :chars_per_line
67
72
  $chars_per_line = [80]
68
- SymbolMap.add_entry('$chars_per_line', :chars_per_line)
73
+ SymbolMap.add_entry('$chars_per_line', symbol)
69
74
  $FOORTH_GLOBALS[symbol] = GlobalVarSpec.new('$chars_per_line', symbol, [])
70
75
 
71
76
  #Show the page length.
@@ -86,24 +91,22 @@ module XfOOrth
86
91
 
87
92
  # [ l 2 3 ... n ] .pp []; pretty print the array!
88
93
  Array.create_shared_method('.pp', TosSpec, [], &lambda {|vm|
89
- puts_foorth_columnized($lines_per_page[0], $chars_per_line[0])
94
+ puts_foorth_columns($lines_per_page[0], $chars_per_line[0])
90
95
  })
91
96
 
92
97
  # [ l 2 3 ... n ] .format_columns []; format to strings with columns.
93
98
  Array.create_shared_method('.format_columns', TosSpec, [], &lambda {|vm|
94
- vm.push(foorth_columnize($lines_per_page[0], $chars_per_line[0])
95
- .map {|page| page << ""}
96
- .flatten[0...-1])
99
+ vm.push(format_foorth_columns($lines_per_page[0], $chars_per_line[0]))
97
100
  })
98
101
 
99
102
  # [ l 2 3 ... n ] .print_columns []; pretty print columns.
100
103
  Array.create_shared_method('.print_columns', TosSpec, [], &lambda {|vm|
101
- puts_foorth_columnized($lines_per_page[0], $chars_per_line[0])
104
+ puts_foorth_columns($lines_per_page[0], $chars_per_line[0])
102
105
  })
103
106
 
104
107
  #[["1" "stuff"] ["two" stuff] .format_bullets; format to strings with bullets.
105
108
  Array.create_shared_method('.format_bullets', TosSpec, [], &lambda {|vm|
106
- vm.push(foorth_bulletize($chars_per_line[0]))
109
+ vm.push(foorth_format_bullets($chars_per_line[0]))
107
110
  })
108
111
 
109
112
  #[["1" "stuff"] ["two" stuff] .print_bullets; pretty print bullet points.
@@ -113,7 +116,7 @@ module XfOOrth
113
116
 
114
117
  #{ "1" "stuff" -> "two" "stuff" -> } .format_bullets; format to strings with bullets.
115
118
  Hash.create_shared_method('.format_bullets', TosSpec, [], &lambda {|vm|
116
- vm.push(foorth_bulletize($chars_per_line[0]))
119
+ vm.push(foorth_format_bullets($chars_per_line[0]))
117
120
  })
118
121
 
119
122
  #{ "1" "stuff" -> "two" "stuff" -> } .print_bullets; pretty print bullet points.
@@ -3,5 +3,5 @@
3
3
  #* version.rb - The version string for fOOrth.
4
4
  module XfOOrth
5
5
  #The version string for fOOrth.
6
- VERSION = "0.6.7"
6
+ VERSION = "0.6.8"
7
7
  end
data/sire.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # coding: utf-8
2
2
  # A Simple Interactive Ruby Environment
3
3
 
4
- $no_alias_read_line_module = true
5
4
  require 'mini_readline'
6
5
  require 'pp'
7
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fOOrth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.7
4
+ version: 0.6.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Camilleri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-21 00:00:00.000000000 Z
11
+ date: 2016-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - ">="
172
172
  - !ruby/object:Gem::Version
173
- version: 0.4.8
173
+ version: 0.7.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
- version: 0.4.8
180
+ version: 0.7.0
181
181
  description: An Object Oriented FORTHesque language gem.
182
182
  email: peter.c.camilleri@gmail.com
183
183
  executables:
@@ -187,6 +187,7 @@ extra_rdoc_files: []
187
187
  files:
188
188
  - ".gitignore"
189
189
  - ".rdoc_options"
190
+ - CODE_OF_CONDUCT.md
190
191
  - Gemfile
191
192
  - README.md
192
193
  - bin/fOOrth
@@ -282,8 +283,13 @@ files:
282
283
  - lib/fOOrth/library/duration/make.rb
283
284
  - lib/fOOrth/library/duration_library.rb
284
285
  - lib/fOOrth/library/fiber_library.rb
286
+ - lib/fOOrth/library/formatting/array.rb
285
287
  - lib/fOOrth/library/formatting/bullets.rb
286
288
  - lib/fOOrth/library/formatting/columns.rb
289
+ - lib/fOOrth/library/formatting/hash.rb
290
+ - lib/fOOrth/library/formatting/nil.rb
291
+ - lib/fOOrth/library/formatting/object.rb
292
+ - lib/fOOrth/library/formatting/string.rb
287
293
  - lib/fOOrth/library/hash_library.rb
288
294
  - lib/fOOrth/library/in_stream_library.rb
289
295
  - lib/fOOrth/library/integer_library.rb
@@ -371,7 +377,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
371
377
  version: '0'
372
378
  requirements: []
373
379
  rubyforge_project:
374
- rubygems_version: 2.2.2
380
+ rubygems_version: 2.2.3
375
381
  signing_key:
376
382
  specification_version: 4
377
383
  summary: FNF == fOOrth is Not FORTH.