termgui 0.0.4 → 0.0.5

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/lib/termgui.rb +1 -1
  3. metadata +40 -107
  4. data/Gemfile +0 -14
  5. data/README.md +0 -321
  6. data/src/action.rb +0 -58
  7. data/src/box.rb +0 -90
  8. data/src/color.rb +0 -174
  9. data/src/cursor.rb +0 -69
  10. data/src/editor/editor_base.rb +0 -152
  11. data/src/editor/editor_base_handlers.rb +0 -116
  12. data/src/element.rb +0 -61
  13. data/src/element_bounds.rb +0 -111
  14. data/src/element_box.rb +0 -64
  15. data/src/element_render.rb +0 -102
  16. data/src/element_style.rb +0 -51
  17. data/src/emitter.rb +0 -102
  18. data/src/emitter_state.rb +0 -19
  19. data/src/enterable.rb +0 -93
  20. data/src/event.rb +0 -92
  21. data/src/focus.rb +0 -102
  22. data/src/geometry.rb +0 -53
  23. data/src/image.rb +0 -60
  24. data/src/input.rb +0 -85
  25. data/src/input_grab.rb +0 -17
  26. data/src/input_time.rb +0 -97
  27. data/src/key.rb +0 -114
  28. data/src/log.rb +0 -24
  29. data/src/node.rb +0 -117
  30. data/src/node_attributes.rb +0 -27
  31. data/src/node_visit.rb +0 -52
  32. data/src/renderer.rb +0 -119
  33. data/src/renderer_cursor.rb +0 -18
  34. data/src/renderer_draw.rb +0 -28
  35. data/src/renderer_image.rb +0 -31
  36. data/src/renderer_print.rb +0 -40
  37. data/src/screen.rb +0 -96
  38. data/src/screen_element.rb +0 -59
  39. data/src/screen_input.rb +0 -43
  40. data/src/screen_renderer.rb +0 -53
  41. data/src/style.rb +0 -149
  42. data/src/tco/colouring.rb +0 -248
  43. data/src/tco/config.rb +0 -57
  44. data/src/tco/palette.rb +0 -603
  45. data/src/tco/tco_termgui.rb +0 -30
  46. data/src/termgui.rb +0 -29
  47. data/src/util.rb +0 -110
  48. data/src/util/css.rb +0 -98
  49. data/src/util/css_query.rb +0 -23
  50. data/src/util/easing.rb +0 -364
  51. data/src/util/hash_object.rb +0 -131
  52. data/src/util/imagemagick.rb +0 -27
  53. data/src/util/justify.rb +0 -20
  54. data/src/util/unicode-categories.rb +0 -572
  55. data/src/util/wrap.rb +0 -102
  56. data/src/widget/button.rb +0 -33
  57. data/src/widget/checkbox.rb +0 -47
  58. data/src/widget/col.rb +0 -30
  59. data/src/widget/image.rb +0 -106
  60. data/src/widget/inline.rb +0 -40
  61. data/src/widget/input_number.rb +0 -73
  62. data/src/widget/inputbox.rb +0 -85
  63. data/src/widget/label.rb +0 -33
  64. data/src/widget/modal.rb +0 -69
  65. data/src/widget/row.rb +0 -26
  66. data/src/widget/selectbox.rb +0 -100
  67. data/src/widget/textarea.rb +0 -54
  68. data/src/xml/xml.rb +0 -80
  69. data/test/action_test.rb +0 -34
  70. data/test/box_test.rb +0 -15
  71. data/test/css_test.rb +0 -39
  72. data/test/editor/editor_base_test.rb +0 -201
  73. data/test/element_bounds_test.rb +0 -77
  74. data/test/element_box_test.rb +0 -8
  75. data/test/element_render_test.rb +0 -124
  76. data/test/element_style_test.rb +0 -85
  77. data/test/element_test.rb +0 -10
  78. data/test/emitter_test.rb +0 -108
  79. data/test/event_test.rb +0 -19
  80. data/test/focus_test.rb +0 -37
  81. data/test/geometry_test.rb +0 -12
  82. data/test/input_test.rb +0 -47
  83. data/test/key_test.rb +0 -14
  84. data/test/log_test.rb +0 -21
  85. data/test/node_test.rb +0 -105
  86. data/test/performance/performance1.rb +0 -48
  87. data/test/renderer_test.rb +0 -74
  88. data/test/renderer_test_rect.rb +0 -4
  89. data/test/screen_test.rb +0 -58
  90. data/test/style_test.rb +0 -18
  91. data/test/termgui_test.rb +0 -10
  92. data/test/test_all.rb +0 -30
  93. data/test/util_hash_object_test.rb +0 -93
  94. data/test/util_test.rb +0 -26
  95. data/test/widget/checkbox_test.rb +0 -99
  96. data/test/widget/col_test.rb +0 -87
  97. data/test/widget/inline_test.rb +0 -40
  98. data/test/widget/label_test.rb +0 -94
  99. data/test/widget/row_test.rb +0 -40
  100. data/test/wrap_test.rb +0 -11
  101. data/test/xml_test.rb +0 -77
@@ -1,53 +0,0 @@
1
- module TermGui
2
- # represents a scroll viewport offset
3
- class Offset
4
- attr_accessor :left, :top
5
-
6
- def initialize(left: 0, top: 0)
7
- @left = left
8
- @top = top
9
- end
10
- end
11
-
12
- # Represents a rectangle in the form of {top, left, bottom, top}
13
- class Bounds < Offset
14
- attr_accessor :right, :bottom
15
-
16
- def initialize(left: 0, right: 0, top: 0, bottom: 0)
17
- super(left: left, top: top)
18
- @right = right
19
- @bottom = bottom
20
- end
21
-
22
- def self.from_hash(hash)
23
- merge_hash_into_object hash, Bounds.new
24
- end
25
- end
26
-
27
- class Point
28
- attr_accessor :x, :y
29
- def initialize(x: 0, y: 0)
30
- @x = x
31
- @y = y
32
- end
33
- end
34
-
35
- class Rectangle < Point
36
- attr_accessor :width, :height
37
-
38
- def initialize(x: 0, y: 0, width: 0, height: 0)
39
- super(x: x, y: y)
40
- @width = width
41
- @height = height
42
- end
43
-
44
- def self.from_hash(hash)
45
- merge_hash_into_object hash, Rectangle.new
46
- end
47
- end
48
- end
49
-
50
- Offset = TermGui::Offset
51
- Bounds = TermGui::Bounds
52
- Point = TermGui::Point
53
- Rectangle = TermGui::Rectangle
@@ -1,60 +0,0 @@
1
- require 'chunky_png'
2
- require 'fileutils'
3
- require_relative 'util/imagemagick'
4
- # small facade for image decoding and processing
5
- # Right now only supports reading png thanks to chunky_png
6
- module TermGui
7
- class Image
8
- attr_reader :path
9
-
10
- def initialize(image = nil, path = image.is_a?(String) ? image : 'unknown.png')
11
- if image.is_a?(String)
12
- if File.extname(image).capitalize != '.png'
13
- if !image_magick_available
14
- throw 'Cannot create image from non PNG file without imagemagick available'
15
- else
16
- image = convert(image)
17
- end
18
- end
19
- end
20
- @image = image.is_a?(String) ? ChunkyPNG::Image.from_file(image) : image
21
- @path = path
22
- end
23
-
24
- def rgb(x = 0, y = 0, transparent_color = nil)
25
- p = @image[x, y]
26
- if transparent_color
27
- bg = ChunkyPNG::Color.rgb(transparent_color[0], transparent_color[1], transparent_color[2])
28
- p = ChunkyPNG::Color. interpolate_quick(p, bg, ChunkyPNG::Color.a(p))
29
- end
30
- [ChunkyPNG::Color.r(p), ChunkyPNG::Color.g(p), ChunkyPNG::Color.b(p)]
31
- end
32
-
33
- def rgba(x = 0, y = 0)
34
- p = @image[x, y]
35
- [ChunkyPNG::Color.r(p), ChunkyPNG::Color.g(p), ChunkyPNG::Color.b(p), ChunkyPNG::Color.a(p)]
36
- end
37
-
38
- def width
39
- @image.width
40
- end
41
-
42
- def height
43
- @image.height
44
- end
45
-
46
- # returns a new image which is the result of scaling this image to given dimentions
47
- def scale(width: @image.width, height: @image.height,
48
- algorithm: 'bilineal') # bilinear, nearest_neighbor
49
- if algorithm == 'nearest_neighbor'
50
- Image.new(@image.resample_nearest_neighbor(width, height), path)
51
- else
52
- Image.new(@image.resample_bilinear(width, height), path)
53
- end
54
- end
55
-
56
- def crop(x: 0, y: 0, width: @image.width, height: @image.height)
57
- Image.new(@image.crop(x, y, width, height), path)
58
- end
59
- end
60
- end
@@ -1,85 +0,0 @@
1
- require_relative 'emitter'
2
- require_relative 'log'
3
- require_relative 'event'
4
- require_relative 'input_time'
5
- require_relative 'input_grab'
6
- require 'io/console'
7
- require 'io/wait'
8
- require_relative 'key'
9
-
10
- module TermGui
11
- # responsible of listening stdin and event loop
12
- class Input < Emitter
13
- include InputTime
14
- include InputGrab
15
-
16
- attr_reader :interval, :stdin, :stopped
17
-
18
- def initialize(stdin = $stdin, interval = 0.0000001)
19
- super
20
- @interval = interval
21
- @stdin = stdin
22
- @stopped = true
23
- install(:key)
24
- end
25
-
26
- def stop
27
- @stopped = true
28
- end
29
-
30
- # starts listening for user input. Implemented like an event loop reading from @input_stream each @interval
31
- def start
32
- return self unless @stopped
33
-
34
- @stdin.raw do |io|
35
- @io = io
36
- @stopped = false
37
- loop do
38
- tick
39
- break if @stopped
40
- end
41
- end
42
- end
43
-
44
- # Once it `start`s this method is called on the loop to read input. Calls update_status which update timers (timeout - interval).
45
- # Could be useful for applications with their own event loops or time long blocking tasks to notify input/timeouts
46
- def tick
47
- char = get_char_or_sequence
48
- if char
49
- key = char.inspect
50
- key = key[1..key.length - 2]
51
- key = char_to_name(key) || char
52
- emit_key char, key
53
- else
54
- sleep @interval
55
- end
56
- update_status
57
- end
58
-
59
- def emit_key(char, key = char)
60
- event = KeyEvent.new key, char
61
- emit 'key', event
62
- end
63
-
64
- def write(s)
65
- @stdin.write s
66
- end
67
-
68
- protected
69
-
70
- def get_char_or_sequence(io = @io)
71
- if io.ready?
72
- result = io.sysread(1)
73
- while (CSI.start_with?(result) ||
74
- (result.start_with?(CSI) &&
75
- !result.codepoints[-1].between?(64, 126))) &&
76
- (next_char = get_char_or_sequence(io))
77
- result << next_char
78
- end
79
- result
80
- end
81
- end
82
- end
83
- end
84
-
85
- Input = TermGui::Input
@@ -1,17 +0,0 @@
1
- require_relative 'util'
2
-
3
- # Add Input support for grab, this is stop notifying listeners and notify others. Based on EmitterState
4
- module InputGrab
5
- def grab(block = nil, &b)
6
- the_block = block == nil ? b : block
7
- throw 'Block not given' unless the_block
8
- emitter_save('grab')
9
- emitter_reset
10
- install(:key)
11
- subscribe(:key, the_block)
12
- end
13
-
14
- def ungrab
15
- emitter_load('grab')
16
- end
17
- end
@@ -1,97 +0,0 @@
1
- require_relative 'util'
2
-
3
- # Add Input support for set_timeout and set_interval based on input event loop.
4
- # Assumes `@time = Time.now` is assigned on each iteration.
5
- module InputTime
6
- def initialize(*_args)
7
- @time = Time.now
8
- @timeout_listeners = []
9
- @interval_listeners = []
10
- @wait_timeout = 5
11
- @wait_interval = 0.1
12
- end
13
-
14
- # register a timeout listener that will be called in given seconds (aprox).
15
- # Returns a listener object that can be used with clear_timeout to remove the listener
16
- def set_timeout(seconds = @interval, block = nil, &proc_block)
17
- the_block = block == nil ? proc_block : block
18
- throw 'No block provided' if the_block == nil
19
- listener = { seconds: seconds, block: the_block, target: @time + seconds }
20
- @timeout_listeners.push listener
21
- listener
22
- end
23
-
24
- # clears a previoulsy registered timeout listener. Use the same block (or what set_timeout returned)
25
- def clear_timeout(listener)
26
- @timeout_listeners.delete listener
27
- end
28
-
29
- # similar to HTML window.setInterval
30
- def set_interval(seconds = @interval, block = nil, &proc_block)
31
- seconds = seconds == nil ? @interval : seconds
32
- the_block = block == nil ? proc_block : block
33
- throw 'No block provided' if the_block == nil
34
- listener = { seconds: seconds || @interval, block: the_block, next: @time + seconds }
35
- @interval_listeners.push listener
36
- listener
37
- end
38
-
39
- # clears a previoulsy registered interval listener. Use the same block (or what set_interval returned)
40
- def clear_interval(listener)
41
- @interval_listeners.delete listener
42
- end
43
-
44
- def wait_for(predicate, timeout = @wait_timeout, interval = @wait_interval, &block)
45
- throw 'No block provided' unless block
46
- interval_listener = nil
47
- timeout_listener = set_timeout(timeout) do
48
- clear_interval interval_listener
49
- block.call true
50
- end
51
- interval_listener = set_interval(interval) do
52
- if predicate.call
53
- clear_interval interval_listener
54
- clear_timeout timeout_listener
55
- block.call false
56
- end
57
- end
58
- [timeout_listener, interval_listener]
59
- end
60
-
61
- def clear_wait_for(listeners)
62
- clear_interval listeners[1]
63
- clear_timeout listeners[0]
64
- end
65
-
66
- def stop
67
- super
68
- @timeout_listeners = []
69
- @interval_listeners = []
70
- end
71
-
72
- protected
73
-
74
- def update_status
75
- @time = Time.now
76
- dispatch_set_interval
77
- dispatch_set_timeout
78
- end
79
-
80
- def dispatch_set_timeout
81
- @timeout_listeners.each do |listener|
82
- if listener[:target] < @time
83
- listener[:block].call
84
- @timeout_listeners.delete listener
85
- end
86
- end
87
- end
88
-
89
- def dispatch_set_interval
90
- @interval_listeners.each do |listener|
91
- if listener[:next] < @time
92
- listener[:block].call
93
- listener[:next] = @time + listener[:seconds]
94
- end
95
- end
96
- end
97
- end
data/src/key.rb DELETED
@@ -1,114 +0,0 @@
1
- # maps charsequences like '\n', '\e[1;7C' to objects like {name: 'enter'}, {name: 'right', control: true, meta: true}
2
- # TODO: support meta-d ('\xC3': 'C-', '\xB0': 'C-') which is defined by two characters
3
-
4
- require_relative 'log'
5
-
6
- CSI = "\e[".freeze
7
-
8
- CHAR_NAMES = {
9
-
10
- '\e[A': 'up',
11
- '\e[1;3A': 'M-up',
12
- 'e[1;2A': 'S-up',
13
- '\e[1;6A': 'S-C-up',
14
- '\e[1;7A': 'M-C-up',
15
-
16
- '\e[B': 'down',
17
- '\e[1;3B': 'M-down',
18
- 'e[1;2B': 'S-down',
19
- '\e[1;6B': 'S-C-down',
20
- '\e[1;7B': 'M-C-down',
21
-
22
- '\e[D': 'left',
23
- '\eb': 'M-left',
24
- 'e[1;2D': 'S-left',
25
- '\e[1;6D': 'S-C-left',
26
- '\e[1;7D': 'M-C-left',
27
-
28
- '\e[C': 'right',
29
- '\ef': 'M-right',
30
- 'e[1;2C': 'S-right',
31
- '\e[1;6C': 'S-C-right',
32
- '\e[1;7C': 'M-C-right',
33
-
34
- '\e': 'escape',
35
- '\r': 'enter',
36
- '\t': 'tab',
37
- '\e[Z': 'S-tab',
38
-
39
- '\e[3~': 'delete',
40
- "\u232B": 'delete',
41
-
42
- '\x7F': 'backspace',
43
- ' ': 'space',
44
-
45
- # control-x
46
- '\x01': 'C-a',
47
- '\x02': 'C-b',
48
- '\x03': 'C-c',
49
- '\x04': 'C-d',
50
- '\x05': 'C-e',
51
- '\x06': 'C-f',
52
- '\a': 'C-g',
53
- '\b': 'C-h',
54
- # '\t': "C-i",
55
- '\n': 'C-j',
56
- '\v': 'C-k',
57
- '\f': 'C-l',
58
- '\x0E': 'C-n',
59
- '\x0F': 'C-o',
60
- '\x10': 'C-p',
61
- '\x11': 'C-q',
62
- '\x12': 'C-r',
63
- '\x13': 'C-s',
64
- '\x14': 'C-t',
65
- '\x15': 'C-u',
66
- '\x16': 'C-v',
67
- '\x18': 'C-x',
68
- '\x19': 'C-y',
69
- '\x1A': 'C-z'
70
- }.freeze
71
-
72
- def name_to_char(name)
73
- char = CHAR_NAMES.keys.find { |c| CHAR_NAMES[c] == name }
74
- char ? char.to_s : name
75
- end
76
-
77
- def char_to_name(ch)
78
- CHAR_NAMES[:"#{ch}"]
79
- end
80
-
81
- ALPHANUMERICS =
82
- ('a'...'z').to_a
83
- .concat(('A'..'Z').to_a)
84
- .concat(('0'...'9').to_a)
85
- .concat(%w[z Z 9])
86
- .concat(',.-;:_ç´Ç¨+`*^{}[]¡\'¡¿?ªº\\!"·$%&/()=|@#¢∞¬÷“”'.split(''))
87
-
88
- def alphanumeric?(c)
89
- ALPHANUMERICS.include? c
90
- end
91
-
92
- NUMERICS = ['.'].concat(('0'...'9').to_a).push('9')
93
-
94
- def numeric?(c)
95
- NUMERICS.include? c
96
- end
97
-
98
- BRAILE = ['⠋', ',⠇', '⠉', '⠃', '⠙', '⢮', '⢯', '⢱', '⢲', '⢳', '⢴', '⢵', '⢶', '⢷', '⢸', '⢹', '⢺', '⢻', '⢼', '⢽', '⢾', '⠂', '⠃', '⠄', '⠅', '⠆', '⠇', '⠈', '⠉', '⠊', '⠋', '⠍', '⠎', '⠏', '⠐', '⠑', '⠒', '⠓', '⠕', '⠖', '⠗', '⠘', '⠙', '⠚', '⠛', '⠜', '⠝', '⠞', '⠟', '⠠', '⠡', '⠢', '⠣', '⠤', '⠥', '⠦', '⠧', '⠨', '⠩', '⠫', '⠬', '⠭', '⠮', '⠯', '⠰', '⠱', '⠲', '⠳', '⠴', '⠶', '⠷', '⠹', '⠺', '⠻', '⠼', '⠽', '⠾', '⠿', '⡀', '⡁', '⡂', '⡄', '⡅', '⡆', '⡇', '⡈', '⡉', '⡊', '⡋', '⡌', '⡍', '⡏', '⡐', '⡑', '⡒', '⡓', '⡔', '⡕', '⡖', '⡗', '⡘', '⡚', '⡛', '⡝', '⡞', '⡟', '⡠', '⡡', '⡣', '⡤', '⡥', '⡦', '⡧', '⡨', '⡩', '⡪', '⡫', '⡬', '⡭', '⡮', '⡯', '⡱', '⡲', '⡳', '⡴', '⡵', '⡶', '⡷', '⡸', '⡹', '⡺', '⡻', '⡼', '⡽', '⡾', '⡿', '⢀', '⢂', '⢃', '⢄', '⢅', '⢆', '⢇', '⢈', '⢉', '⢊', '⢋', '⢍', '⢎', '⢏', '⢐', '⢑', '⢒', '⢓', '⢔', '⢕', '⢖', '⢗', '⢘', '⢙', '⢚', '⢛', '⢜', '⢝', '⢞', '⢟', '⢠', '⢡', '⢣', '⢤', '⢥', '⢦', '⢧', '⢨', '⢩', '⢪', '⢫', '⢬', '⢭', '⢮', '⢯', '⢱', '⢲', '⢳', '⢴', '⢵', '⢶', '⢷', '⢸', '⢹', '⢺', '⢻', '⢼', '⢽', '⢾', '⢿', '⣀', '⣂', '⣃', '⣄', '⣅', '⣆', '⣇', '⣈', '⣉', '⣊', '⣋', '⣍', '⣎', '⣏', '⣐', '⣑', '⣓', '⣔', '⣕', '⣖', '⣗', '⣙', '⣚', '⣛', '⣜', '⣝', '⣞', '⣟', '⣠', '⣢', '⣣', '⣥', '⣦', '⣧', '⣨', '⣩', '⣪', '⣫', '⣬', '⣭', '⣮', '⣯', '⣱', '⣲', '⣳', '⣴', '⣵', '⣶', '⣷', '⣸', '⣹', '⣺', '⣻', '⣼', '⣽', '⣾', '⣿'].freeze
99
-
100
- BRAILE_FILLED = ['⢮', '⢯', '⢱', '⢲', '⢳', '⢴', '⢵', '⢶', '⢷', '⢻', '⢼', '⢽', '⢾', '⠟', '⠮', '⠯', '⠳', '⠴', '⠶', '⠷', '⠹', '⠺', '⠻', '⠼', '⠽', '⠾', '⠿', '⡝', '⡞', '⡟', '⡪', '⡫', '⡬', '⡭', '⡮', '⡯', '⡱', '⡲', '⡳', '⡴', '⡵', '⡶', '⡷', '⡸', '⡹', '⡺', '⡻', '⡼', '⡽', '⡾', '⡿', '⢜', '⢝', '⢞', '⢟', '⢭', '⢮', '⢯', '⢱', '⢲', '⢳', '⢴', '⢵', '⢶', '⢷', '⢸', '⢹', '⢺', '⢻', '⢼', '⢽', '⢾', '⢿', '⣀', '⣂', '⣃', '⣄', '⣅', '⣆', '⣇', '⣈', '⣉', '⣊', '⣋', '⣍', '⣎', '⣏', '⣐', '⣑', '⣓', '⣔', '⣕', '⣖', '⣗', '⣙', '⣚', '⣛', '⣜', '⣝', '⣞', '⣟', '⣠', '⣢', '⣣', '⣥', '⣦', '⣧', '⣨', '⣩', '⣪', '⣫', '⣬', '⣭', '⣮', '⣯', '⣱', '⣲', '⣳', '⣴', '⣵', '⣶', '⣷', '⣸', '⣹', '⣺', '⣻', '⣼', '⣽', '⣾', '⣿'].freeze
101
-
102
- BLOCKS = ['▀', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█', '▉', '▊', '▋', '▌', '▍', '▎', '▏', '▐', '░', '▒', '▓', '▔', '▕', '▖', '▗', '▘', '▙', '▚', '▛', '▜', '▝', '▞', '▟', '■', '□', '▢', '▣', '▤', '▥', '▦', '▧', '▨', '▩', '▪', '▫', '▬', '▭', '▮', '▯'].freeze
103
-
104
- GEOMETRIC_SHAPES = ['■', '□', '▢', '▣', '▤', '▥', '▦', '▧', '▨', '▩', '▪', '▫', '▬', '▭', '▮', '▯', '▰', '▱', '▲', '△', '▴', '▵', '▶', '▷', '▸', '▹', '►', '▻', '▼', '▽', '▾', '▿', '◀', '◁', '◂', '◃', '◄', '◅', '◆', '◇', '◈', '◉', '◊', '○', '◌', '◍', '◎', '●', '◐', '◑', '◒', '◓', '◔', '◕', '◖', '◗', '◘', '◙', '◚', '◛', '◜', '◝', '◞', '◟', '◠', '◡', '◢', '◣', '◤', '◥', '◦', '◧', '◨', '◩', '◪', '◫', '◬', '◭', '◮', '◯', '◰', '◱', '◲', '◳', '◴', '◵', '◶', '◷', '◸', '◹', '◺', '◻', '◼', '◽', '◾', '◿'].freeze
105
-
106
- KANGXI = ['⼁', '⼂', '⼃', '⼄', '⼅', '⼆', '⼇', '⼈', '⼉', '⼊', '⼋', '⼌', '⼍', '⼎', '⼏', '⼐', '⼑', '⼒', '⼓', '⼔', '⼕', '⼖', '⼗', '⼘', '⼙', '⼚', '⼛', '⼜', '⼝', '⼞', '⼟', '⼠', '⼡', '⼢', '⼣', '⼤', '⼥', '⼦', '⼧', '⼨', '⼩', '⼪', '⼫', '⼬', '⼭', '⼮', '⼯', '⼰', '⼱', '⼲', '⼳', '⼴', '⼵', '⼶', '⼷', '⼸', '⼹', '⼺', '⼻', '⼼', '⼽', '⼾', '⼿', '⽀', '⽁', '⽂', '⽃', '⽄', '⽅', '⽆', '⽇', '⽈', '⽉', '⽊', '⽋', '⽌', '⽍', '⽎', '⽏', '⽐', '⽑', '⽒', '⽓', '⽔', '⽕', '⽖', '⽗', '⽘', '⽙', '⽚', '⽛', '⽜', '⽝', '⽞', '⽟', '⽠', '⽡', '⽢', '⽣', '⽤', '⽥', '⽦', '⽧', '⽨', '⽩', '⽪', '⽫', '⽬', '⽭', '⽮', '⽯', '⽰', '⽱', '⽲', '⽳', '⽴', '⽵', '⽶', '⽷', '⽸', '⽹', '⽺', '⽻', '⽼', '⽽', '⽾', '⽿', '⾀', '⾁', '⾂', '⾃', '⾄', '⾅', '⾆', '⾇', '⾈', '⾉', '⾊', '⾋', '⾌', '⾍', '⾎', '⾏', '⾐', '⾑', '⾒', '⾓', '⾔', '⾕', '⾖', '⾗', '⾘', '⾙', '⾚', '⾛', '⾜', '⾝', '⾞', '⾟', '⾠', '⾡', '⾢', '⾣', '⾤', '⾥', '⾦', '⾧', '⾨', '⾩', '⾪', '⾫', '⾬', '⾭', '⾮', '⾯', '⾰', '⾱', '⾲', '⾳', '⾴', '⾵', '⾶', '⾷', '⾸', '⾹', '⾺', '⾻', '⾼', '⾽', '⾾', '⾿', '⿀', '⿁', '⿂', '⿃', '⿄', '⿅', '⿆', '⿇', '⿈', '⿉', '⿊', '⿋', '⿌', '⿍', '⿎', '⿏', '⿐', '⿑', '⿒', '⿓', '⿔', '⿕'].freeze
107
-
108
- Yijing = ['䷀', '䷁', '䷂', '䷃', '䷄', '䷅', '䷆', '䷇', '䷈', '䷉', '䷊', '䷋', '䷌', '䷍', '䷎', '䷏', '䷐', '䷑', '䷒', '䷓', '䷔', '䷕', '䷖', '䷗', '䷘', '䷙', '䷚', '䷛', '䷜', '䷝', '䷞', '䷟', '䷠', '䷡', '䷢', '䷣', '䷤', '䷥', '䷦', '䷧', '䷨', '䷩', '䷪', '䷫', '䷬', '䷭', '䷮', '䷯', '䷰', '䷱', '䷲', '䷳', '䷴', '䷵', '䷶', '䷷', '䷸', '䷹', '䷺', '䷻', '䷼', '䷽', '䷾', '䷿'].freeze
109
-
110
- SAURASHTRA = ['ꢂ', 'ꢃ', 'ꢄ', 'ꢅ', 'ꢆ', 'ꢇ', 'ꢈ', 'ꢉ', 'ꢊ', 'ꢋ', 'ꢌ', 'ꢍ', 'ꢎ', 'ꢏ', 'ꢐ', 'ꢑ', 'ꢒ', 'ꢓ', 'ꢔ', 'ꢕ', 'ꢖ', 'ꢗ', 'ꢘ', 'ꢙ', 'ꢚ', 'ꢛ', 'ꢜ', 'ꢝ', 'ꢞ', 'ꢟ', 'ꢠ', 'ꢡ', 'ꢢ', 'ꢣ', 'ꢤ', 'ꢥ', 'ꢦ', 'ꢧ', 'ꢨ', 'ꢩ', 'ꢪ', 'ꢫ', 'ꢬ', 'ꢭ', 'ꢮ', 'ꢯ', 'ꢰ', 'ꢱ', 'ꢲ', 'ꢳ', '꣎', '꣏', '꣐', '꣑', '꣒', '꣓', '꣔', '꣕', '꣖', '꣗', '꣘', '꣙'].freeze
111
-
112
- LINEAR_B_IDEOGRAMS = %w[𐁜 𐁝 𐂀 𐂁 𐂂 𐂃 𐂄 𐂅 𐂆 𐂇 𐂈 𐂉 𐂊 𐂋 𐂌 𐂍 𐂎 𐂏 𐂐 𐂑 𐂒 𐂓 𐂔 𐂕 𐂖 𐂗 𐂘 𐂙 𐂚 𐂛 𐂜 𐂝 𐂞 𐂟 𐂠 𐂡 𐂢 𐂣 𐂤 𐂥 𐂦 𐂧 𐂨 𐂩 𐂪 𐂫 𐂬 𐂭 𐂮 𐂯 𐂰 𐂱 𐂲 𐂳 𐂴 𐂵 𐂶 𐂷 𐂸 𐂹 𐂺 𐂻 𐂼 𐂽 𐂾 𐂿 𐃀 𐃁 𐃂 𐃃 𐃄 𐃅 𐃆 𐃇 𐃈 𐃉 𐃊 𐃋 𐃌 𐃍 𐃎 𐃏 𐃐 𐃑 𐃒 𐃓 𐃔 𐃕 𐃖 𐃗 𐃘 𐃙 𐃚 𐃛 𐃜 𐃝 𐃞 𐃟 𐃠 𐃡 𐃢 𐃣 𐃤 𐃥 𐃦 𐃧 𐃨 𐃩 𐃪 𐃫 𐃬 𐃭 𐃮 𐃯 𐃰 𐃱 𐃲 𐃳 𐃴 𐃵 𐃶 𐃷 𐃸 𐃹 𐃺].freeze
113
-
114
- CUNEIFORM = %w[𒀀 𒀁 𒀂 𒀃 𒀄 𒀅 𒀆 𒀇 𒀈 𒀉 𒀊 𒀋 𒀌 𒀍 𒀎 𒀏 𒀐 𒀑 𒀒 𒀓 𒀔 𒀕 𒀖 𒀗 𒀘 𒀙 𒀚 𒀛 𒀜 𒀝 𒀞 𒀟 𒀠 𒀡 𒀢 𒀣 𒀤 𒀥 𒀦 𒀧 𒀨 𒀩 𒀪 𒀫 𒀬 𒀭 𒀮 𒀯 𒀰 𒀱 𒀲 𒀳 𒀴 𒀵 𒀶 𒀷 𒀸 𒀹 𒀺 𒀻 𒀼 𒀽 𒀾 𒀿 𒁀 𒁁 𒁂 𒁃 𒁄 𒁅 𒁆 𒁇 𒁈 𒁉 𒁊 𒁋 𒁌 𒁍 𒁎 𒁏 𒁐 𒁑 𒁒 𒁓 𒁔 𒁕 𒁖 𒁗 𒁘 𒁙 𒁚 𒁛 𒁜 𒁝 𒁞 𒁟 𒁠 𒁡 𒁢 𒁣 𒁤 𒁥 𒁦 𒁧 𒁨 𒁩 𒁪 𒁫 𒁬 𒁭 𒁮 𒁯 𒁰 𒁱 𒁲 𒁳 𒁴 𒁵 𒁶 𒁷 𒁸 𒁹 𒁺 𒁻 𒁼 𒁽 𒁾 𒁿 𒂀 𒂁 𒂂 𒂃 𒂄 𒂅 𒂆 𒂇 𒂈 𒂉 𒂊 𒂋 𒂌 𒂍 𒂎 𒂏 𒂐 𒂑 𒂒 𒂓 𒂔 𒂕 𒂖 𒂗 𒂘 𒂙 𒂚 𒂛 𒂜 𒂝 𒂞 𒂟 𒂠 𒂡 𒂢 𒂣 𒂤 𒂥 𒂦 𒂧 𒂨 𒂩 𒂪 𒂫 𒂬 𒂭 𒂮 𒂯 𒂰 𒂱 𒂲 𒂳 𒂴 𒂵 𒂶 𒂷 𒂸 𒂹 𒂺 𒂻 𒂼 𒂽 𒂾 𒂿 𒃀 𒃁 𒃂 𒃃 𒃄 𒃅 𒃆 𒃇 𒃈 𒃉 𒃊 𒃋 𒃌 𒃍 𒃎 𒃏 𒃐 𒃑 𒃒 𒃓 𒃔 𒃕 𒃖 𒃗 𒃘 𒃙 𒃚 𒃛 𒃜 𒃝 𒃞 𒃟 𒃠 𒃡 𒃢 𒃣 𒃤 𒃥 𒃦 𒃧 𒃨 𒃩 𒃪 𒃫 𒃬 𒃭 𒃮 𒃯 𒃰 𒃱 𒃲 𒃳 𒃴 𒃵 𒃶 𒃷 𒃸 𒃹 𒃺 𒃻 𒃼 𒃽 𒃾 𒃿 𒄀 𒄁 𒄂 𒄃 𒄄 𒄅 𒄆 𒄇 𒄈 𒄉 𒄊 𒄋 𒄌 𒄍 𒄎 𒄏 𒄐 𒄑 𒄒 𒄓 𒄔 𒄕 𒄖 𒄗 𒄘 𒄙 𒄚 𒄛 𒄜 𒄝 𒄞 𒄟 𒄠 𒄡 𒄢 𒄣 𒄤 𒄥 𒄦 𒄧 𒄨 𒄩 𒄪 𒄫 𒄬 𒄭 𒄮 𒄯 𒄰 𒄱 𒄲 𒄳 𒄴 𒄵 𒄶 𒄷 𒄸 𒄹 𒄺 𒄻 𒄼 𒄽 𒄾 𒄿 𒅀 𒅁 𒅂 𒅃 𒅄 𒅅 𒅆 𒅇 𒅈 𒅉 𒅊 𒅋 𒅌 𒅍 𒅎 𒅏 𒅐 𒅑 𒅒 𒅓 𒅔 𒅕 𒅖 𒅗 𒅘 𒅙 𒅚 𒅛 𒅜 𒅝 𒅞 𒅟 𒅠 𒅡 𒅢 𒅣 𒅤 𒅥 𒅦 𒅧 𒅨 𒅩 𒅪 𒅫 𒅬 𒅭 𒅮 𒅯 𒅰 𒅱 𒅲 𒅳 𒅴 𒅵 𒅶 𒅷 𒅸 𒅹 𒅺 𒅻 𒅼 𒅽 𒅾 𒅿 𒆀 𒆁 𒆂 𒆃 𒆄 𒆅 𒆆 𒆇 𒆈 𒆉 𒆊 𒆋 𒆌 𒆍 𒆎 𒆏 𒆐 𒆑 𒆒 𒆓 𒆔 𒆕 𒆖 𒆗 𒆘 𒆙 𒆚 𒆛 𒆜 𒆝 𒆞 𒆟 𒆠 𒆡 𒆢 𒆣 𒆤 𒆥 𒆦 𒆧 𒆨 𒆩 𒆪 𒆫 𒆬 𒆭 𒆮 𒆯 𒆰 𒆱 𒆲 𒆳 𒆴 𒆵 𒆶 𒆷 𒆸 𒆹 𒆺 𒆻 𒆼 𒆽 𒆾 𒆿 𒇀 𒇁 𒇂 𒇃 𒇄 𒇅 𒇆 𒇇 𒇈 𒇉 𒇊 𒇋 𒇌 𒇍 𒇎 𒇏 𒇐 𒇑 𒇒 𒇓 𒇔 𒇕 𒇖 𒇗 𒇘 𒇙 𒇚 𒇛 𒇜 𒇝 𒇞 𒇟 𒇠 𒇡 𒇢 𒇣 𒇤 𒇥 𒇦 𒇧 𒇨 𒇩 𒇪 𒇫 𒇬 𒇭 𒇮 𒇯 𒇰 𒇱 𒇲 𒇳 𒇴 𒇵 𒇶 𒇷 𒇸 𒇹 𒇺 𒇻 𒇼 𒇽 𒇾 𒇿 𒈀 𒈁 𒈂 𒈃 𒈄 𒈅 𒈆 𒈇 𒈈 𒈉 𒈊 𒈋 𒈌 𒈍 𒈎 𒈏 𒈐 𒈑 𒈒 𒈓 𒈔 𒈕 𒈖 𒈗 𒈘 𒈙 𒈚 𒈛 𒈜 𒈝 𒈞 𒈟 𒈠 𒈡 𒈢 𒈣 𒈤 𒈥 𒈦 𒈧 𒈨 𒈩 𒈪 𒈫 𒈬 𒈭 𒈮 𒈯 𒈰 𒈱 𒈲 𒈳 𒈴 𒈵 𒈶 𒈷 𒈸 𒈹 𒈺 𒈻 𒈼 𒈽 𒈾 𒈿 𒉀 𒉁 𒉂 𒉃 𒉄 𒉅 𒉆 𒉇 𒉈 𒉉 𒉊 𒉋 𒉌 𒉍 𒉎 𒉏 𒉐 𒉑 𒉒 𒉓 𒉔 𒉕 𒉖 𒉗 𒉘 𒉙 𒉚 𒉛 𒉜 𒉝 𒉞 𒉟 𒉠 𒉡 𒉢 𒉣 𒉤 𒉥 𒉦 𒉧 𒉨 𒉩 𒉪 𒉫 𒉬 𒉭 𒉮 𒉯 𒉰 𒉱 𒉲 𒉳 𒉴 𒉵 𒉶 𒉷 𒉸 𒉹 𒉺 𒉻 𒉼 𒉽 𒉾 𒉿 𒊀 𒊁 𒊂 𒊃 𒊄 𒊅 𒊆 𒊇 𒊈 𒊉 𒊊 𒊋 𒊌 𒊍 𒊎 𒊏 𒊐 𒊑 𒊒 𒊓 𒊔 𒊕 𒊖 𒊗 𒊘 𒊙 𒊚 𒊛 𒊜 𒊝 𒊞 𒊟 𒊠 𒊡 𒊢 𒊣 𒊤 𒊥 𒊦 𒊧 𒊨 𒊩 𒊪 𒊫 𒊬 𒊭 𒊮 𒊯 𒊰 𒊱 𒊲 𒊳 𒊴 𒊵 𒊶 𒊷 𒊸 𒊹 𒊺 𒊻 𒊼 𒊽 𒊾 𒊿 𒋀 𒋁 𒋂 𒋃 𒋄 𒋅 𒋆 𒋇 𒋈 𒋉 𒋊 𒋋 𒋌 𒋍 𒋎 𒋏 𒋐 𒋑 𒋒 𒋓 𒋔 𒋕 𒋖 𒋗 𒋘 𒋙 𒋚 𒋛 𒋜 𒋝 𒋞 𒋟 𒋠 𒋡 𒋢 𒋣 𒋤 𒋥 𒋦 𒋧 𒋨 𒋩 𒋪 𒋫 𒋬 𒋭 𒋮 𒋯 𒋰 𒋱 𒋲 𒋳 𒋴 𒋵 𒋶 𒋷 𒋸 𒋹 𒋺 𒋻 𒋼 𒋽 𒋾 𒋿 𒌀 𒌁 𒌂 𒌃 𒌄 𒌅 𒌆 𒌇 𒌈 𒌉 𒌊 𒌋 𒌌 𒌍 𒌎 𒌏 𒌐 𒌑 𒌒 𒌓 𒌔 𒌕 𒌖 𒌗 𒌘 𒌙 𒌚 𒌛 𒌜 𒌝 𒌞 𒌟 𒌠 𒌡 𒌢 𒌣 𒌤 𒌥 𒌦 𒌧 𒌨 𒌩 𒌪 𒌫 𒌬 𒌭 𒌮 𒌯 𒌰 𒌱 𒌲 𒌳 𒌴 𒌵 𒌶 𒌷 𒌸 𒌹 𒌺 𒌻 𒌼 𒌽 𒌾 𒌿 𒍀 𒍁 𒍂 𒍃 𒍄 𒍅 𒍆 𒍇 𒍈 𒍉 𒍊 𒍋 𒍌 𒍍 𒍎 𒍏 𒍐 𒍑 𒍒 𒍓 𒍔 𒍕 𒍖 𒍗 𒍘 𒍙 𒍚 𒍛 𒍜 𒍝 𒍞 𒍟 𒍠 𒍡 𒍢 𒍣 𒍤 𒍥 𒍦 𒍧 𒍨 𒍩 𒍪 𒍫 𒍬 𒍭 𒍮 𒍯 𒍰 𒍱 𒍲 𒍳 𒍴 𒍵 𒍶 𒍷 𒍸 𒍹 𒍺 𒍻 𒍼 𒍽 𒍾 𒍿 𒎀 𒎁 𒎂 𒎃 𒎄 𒎅 𒎆 𒎇 𒎈 𒎉 𒎊 𒎋 𒎌 𒎍 𒎎 𒎏 𒎐 𒎑 𒎒 𒎓 𒎔 𒎕 𒎖 𒎗 𒎘 𒎙].freeze
data/src/log.rb DELETED
@@ -1,24 +0,0 @@
1
- # Adds logging to file and screen capabilities
2
- module Log
3
- def log_file=(file)
4
- @file = file
5
- end
6
-
7
- def log(*args)
8
- file = @file || 'tmp_log.txt'
9
- s = args.nil? ? 'nil' : args.to_s
10
- s = "------\n#{s}\n"
11
- File.open(file, 'a') { |f| f.puts s }
12
- end
13
- end
14
-
15
- # default logger class
16
- class DefaultLogger
17
- include Log
18
- end
19
-
20
- DEFAULT_LOGGER = DefaultLogger.new
21
-
22
- def log(*args)
23
- DEFAULT_LOGGER.log *args
24
- end