interscript 0.1.0 → 0.1.1

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
  SHA256:
3
- metadata.gz: 19905541367b50886e3d130aac4132cbb5e9050bff1409f924b23848ea5b3a32
4
- data.tar.gz: d9d6a9531009778797f2826cf51dfc2b68b27651608be5c91ed7f343d75ff75f
3
+ metadata.gz: def03b1856a5b9d98e397f378e9958627dfe19077b90293797cc6fc6b81bce3e
4
+ data.tar.gz: d105d03d4c918bfb5a478a4928a8d15cd59dd0be4a04c990bae0b38e52df7a23
5
5
  SHA512:
6
- metadata.gz: 247a535a7fd1203b2331b2c6c99fa9a9e0747c3fc5ff1f5476c034d1c72ae5bd16bbf2866cf639cadd321989dd653a461eda2b0db662db303c381b2de8b18285
7
- data.tar.gz: a9c259539a46c33dc5c7de38edc9b5d330727064509dbc6cc17cdfa3baf1ae950fa3e8c645e45e9e04fa3afc213f50f3e1cfe8c44470bf8024e93f3621e32b87
6
+ metadata.gz: 8c8e1535bc0d688b54da2ebcf29e8c846e07f315c5fe3cc456f918f15b9d46e3ff87ebfb3dc0b40efcc6769f236002b3784fc9e1febfe133b2e81f7a7c5a09a0
7
+ data.tar.gz: 6c11004204682f6b476d4764ac68cb5bbba8a1b53ac6afc268edd2204d3746e953ffbef51ab4bb8c5661ff959bb51c05447622a1e79fa7e012c40a2e77830d0e
data/bin/interscript CHANGED
@@ -5,7 +5,7 @@ require_relative '../lib/interscript'
5
5
  if ARGV.empty?
6
6
  puts "write source file, source format, and output file"
7
7
  else
8
- args = Hash[ ARGV.flat_map{|s| s.scan(/--?([^=\s]+)(?:=(\S+))?/) } ]
8
+ args = Hash[ARGV.flat_map { |s| s.scan(/--?([^=\s]+)(?:=(\S+))?/) }]
9
9
  input = ARGV[0]
10
10
  system_code = args["system"]
11
11
  output_file = args["output"]
@@ -13,10 +13,8 @@ else
13
13
  raise "Please enter the system code with --system={system_code}" unless system_code
14
14
 
15
15
  if output_file
16
- Interscript.instance.transliterate_file(system_code, input, output_file)
16
+ Interscript.transliterate_file(system_code, input, output_file)
17
17
  else
18
- puts Interscript.instance.transliterate(system_code, IO.read(input))
18
+ puts Interscript.transliterate(system_code, IO.read(input))
19
19
  end
20
20
  end
21
-
22
-
data/bin/rspec ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rspec-core", "rspec")
data/lib/interscript.rb CHANGED
@@ -1,53 +1,39 @@
1
- require 'yaml'
2
- require 'singleton'
1
+ # frozen_string_literal: true
3
2
 
4
- class Interscript
5
- include Singleton
6
-
7
- SYSTEM_DEFINITIONS_PATH = File.expand_path('../../maps', __FILE__)
3
+ require 'yaml'
8
4
 
9
- def initialize
10
- @systems = {}
11
- end
5
+ # Transliteration
6
+ module Interscript
7
+ SYSTEM_DEFINITIONS_PATH = File.expand_path('../maps', __dir__)
12
8
 
13
- def transliterate_file(system_code, input_file, output_file)
14
- input = File.read(input_file)
15
- output = transliterate(system_code, input)
9
+ class << self
10
+ def transliterate_file(system_code, input_file, output_file)
11
+ input = File.read(input_file)
12
+ output = transliterate(system_code, input)
16
13
 
17
- File.open(output_file, "w") do |f|
18
- f.puts(output)
14
+ File.open(output_file, "w") do |f|
15
+ f.puts(output)
16
+ end
17
+ puts "Output written to: #{output_file}"
19
18
  end
20
- puts "Output written to: #{output_file}"
21
- end
22
-
23
- def load_system_definition(system_code)
24
- @systems[system_code] ||= YAML.load_file(File.join(SYSTEM_DEFINITIONS_PATH, "#{system_code}.yaml"))
25
- end
26
-
27
- def get_system(system_code)
28
- @systems[system_code]
29
- end
30
19
 
31
- def system_char_map(system_code)
32
- get_system(system_code)["map"]["characters"]
33
- end
34
-
35
- def system_rules(system_code)
36
- get_system(system_code)["map"]["rules"]
37
- end
20
+ def load_system_definition(system_code)
21
+ YAML.load_file(File.join(SYSTEM_DEFINITIONS_PATH, "#{system_code}.yaml"))
22
+ end
38
23
 
39
- def transliterate(system_code, string)
40
- load_system_definition(system_code)
24
+ def transliterate(system_code, string)
25
+ system = load_system_definition(system_code)
41
26
 
42
- # TODO: also need to support regular expressions via system_rules(system_code), before system_char_map
27
+ rules = system["map"]["rules"] || []
28
+ charmap = system["map"]["characters"] || {}
43
29
 
44
- character_map = system_char_map(system_code)
30
+ rules.each do |r|
31
+ string.gsub! %r{#{r["pattern"]}}, r["result"]
32
+ end
45
33
 
46
- string.split('').map do |char|
47
- converted_char = character_map[char] ? character_map[char] : char
48
- string[char] = converted_char
49
- end.join('')
34
+ string.split('').map do |char|
35
+ charmap[char] || char
36
+ end.join('')
37
+ end
50
38
  end
51
-
52
39
  end
53
-
@@ -1,3 +1,3 @@
1
1
  module Interscript
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: interscript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - project_contibutors
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: debase
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '10.0'
47
+ version: '12.0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '10.0'
54
+ version: '12.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -52,15 +66,31 @@ dependencies:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ruby-debug-ide
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description: Interoperable script conversion systems
56
84
  email:
57
85
  executables:
58
86
  - interscript
87
+ - rspec
59
88
  extensions: []
60
89
  extra_rdoc_files: []
61
90
  files:
62
91
  - README.adoc
63
92
  - bin/interscript
93
+ - bin/rspec
64
94
  - lib/interscript.rb
65
95
  - lib/interscript/version.rb
66
96
  homepage: ''
@@ -82,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
112
  - !ruby/object:Gem::Version
83
113
  version: '0'
84
114
  requirements: []
85
- rubygems_version: 3.0.3
115
+ rubygems_version: 3.0.6
86
116
  signing_key:
87
117
  specification_version: 4
88
118
  summary: Interoperable script conversion systems