Module: NCipher
- Extended by:
- Helper
- Defined in:
- lib/n_cipher.rb,
lib/n_cipher/version.rb
Defined Under Namespace
Modules: Helper
Constant Summary collapse
- VERSION =
"0.2.0"
Class Method Summary collapse
Methods included from Helper
Class Method Details
.decode(string, seed:, delimiter:) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/n_cipher.rb', line 29 def decode(string, seed: , delimiter: ) [string, seed, delimiter].each do |obj| raise TypeError, "#{obj} is #{obj.class}. Argument must be string object." unless obj.kind_of?(String) raise ArgumentError, 'Invalid argument.' if obj.empty? end seed_include_in_string = -> { (string.split(//) - delimiter.split(//)).map {|ele| seed.split(//).index(ele) }.all? } delimiter_inclide_in_string = -> { delimiter.split(//).uniq.sort.map {|ele| string.include?(ele) }.all? } seed_and_delimiter_dont_overlap = -> { (seed.split(//).uniq.sort & delimiter.split(//).uniq.sort) == [] } case false when seed_include_in_string.call raise ArgumentError, 'Invalid seed.' when delimiter_inclide_in_string.call raise ArgumentError, 'Invalid delimiter.' when seed_and_delimiter_dont_overlap.call raise ArgumentError, 'Seed and delimiter are deplicated.' end string.split(delimiter).map {|ele| [ele.gsub(/./, convert_table(seed, :decode)).to_i(seed.size)].pack('U') }.join end |
.encode(string, seed: 'にゃんぱす', delimiter: '〜') ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/n_cipher.rb', line 17 def encode(string, seed: 'にゃんぱす', delimiter: '〜') [string, seed, delimiter].each do |obj| raise TypeError, "#{obj} is #{obj.class}. Argument must be string object." unless obj.kind_of?(String) raise ArgumentError, 'Invalid argument.' if obj.empty? end raise ArgumentError, 'Seed must be 2 to 10 characters.' unless seed.size.between?(2,10) raise ArgumentError, 'Seed and delimiter are deplicated.' unless (seed.split(//).uniq.sort & delimiter.split(//).uniq.sort) == [] raise ArgumentError, 'Invalid seed.' unless seed.split(//).size == seed.split(//).uniq.size string.unpack('U*').map {|c| c.to_s(seed.size).gsub(/./, convert_table(seed, :encode)).concat(delimiter) }.join end |