rcnb 0.1.0 → 0.2.0
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.
- checksums.yaml +4 -4
 - data/README.md +41 -1
 - data/lib/rcnb.rb +32 -17
 - data/lib/rcnb/str.rb +68 -0
 - data/lib/rcnb/version.rb +2 -1
 - metadata +3 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: dc00399dbaaa07059d89706fcd1fd3da1879bbb1f9c7705ed2d3f3ae3ad303b8
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: cf1e4013967904175450ec6ca403222f513873aaf385c967726d31a218cd5a7e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f32bec5c338eeed5aea9bb335d9c89525d115224462a6aa2929ae617596907eabb99b0d020d0f1958aa682ce67d46399bfefec6c14743e19589913fbd5a8f75a
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 39fb82d34ee859285180a5732047e2bed6f380209fd63512cd56489f9cc8ddcca25084cd0262be800c55250cb5b40df15a70f53650fc83bc97af4f3a2daa45f8
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,3 +1,43 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # rcnb.rb
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            [](https://rubygems.org/gems/rcnb)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            A ruby implementation of [RCNB](https://github.com/rcnbapp/RCNB.js)
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            ### Install
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 10 
     | 
    
         
            +
            gem install rcnb
         
     | 
| 
      
 11 
     | 
    
         
            +
            ```
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ### Usage
         
     | 
| 
      
 14 
     | 
    
         
            +
            **Basic**
         
     | 
| 
      
 15 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 16 
     | 
    
         
            +
            require 'rcnb'
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            RCNB.encode('Who NB?')
         
     | 
| 
      
 19 
     | 
    
         
            +
            # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
         
     | 
| 
      
 20 
     | 
    
         
            +
            RCNB.decode('ȐĉņþƦȻƝƃŔć')
         
     | 
| 
      
 21 
     | 
    
         
            +
            # => RCNB!
         
     | 
| 
      
 22 
     | 
    
         
            +
            ```
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            **String Enhancement**
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 27 
     | 
    
         
            +
            require 'rcnb/str'
         
     | 
| 
      
 28 
     | 
    
         
            +
            using RCNB::Str
         
     | 
| 
      
 29 
     | 
    
         
            +
             
         
     | 
| 
      
 30 
     | 
    
         
            +
            'Who NB?'.rcnb
         
     | 
| 
      
 31 
     | 
    
         
            +
            # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
         
     | 
| 
      
 32 
     | 
    
         
            +
            'ȐĉņþƦȻƝƃŔć'.rcnb_decode
         
     | 
| 
      
 33 
     | 
    
         
            +
            # => RCNB!
         
     | 
| 
      
 34 
     | 
    
         
            +
            'ȐĉņþƦȻƝƃŔć'.rcnb?
         
     | 
| 
      
 35 
     | 
    
         
            +
            # => RCNB!
         
     | 
| 
      
 36 
     | 
    
         
            +
            'not rcnb'.rcnb?
         
     | 
| 
      
 37 
     | 
    
         
            +
            # => nil
         
     | 
| 
      
 38 
     | 
    
         
            +
            ```
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            ### Reference
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            [RCNB.js](https://github.com/rcnbapp/RCNB.js)   
         
     | 
| 
      
 43 
     | 
    
         
            +
            [RCNB.py](https://github.com/chr233/RCNB.python)
         
     | 
    
        data/lib/rcnb.rb
    CHANGED
    
    | 
         @@ -1,23 +1,28 @@ 
     | 
|
| 
       1 
1 
     | 
    
         | 
| 
       2 
     | 
    
         
            -
            #  
     | 
| 
      
 2 
     | 
    
         
            +
            # # rcnb
         
     | 
| 
       3 
3 
     | 
    
         
             
            # A ruby implementation of RCNB
         
     | 
| 
       4 
4 
     | 
    
         
             
            # ---
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            # RCNB模块
         
     | 
| 
       7 
7 
     | 
    
         
             
            # 
         
     | 
| 
       8 
     | 
    
         
            -
            #  
     | 
| 
       9 
     | 
    
         
            -
            # 
     | 
| 
       10 
     | 
    
         
            -
            # 
     | 
| 
       11 
     | 
    
         
            -
            # 
     | 
| 
       12 
     | 
    
         
            -
            # 
     | 
| 
       13 
     | 
    
         
            -
            # 
     | 
| 
       14 
     | 
    
         
            -
            # 
     | 
| 
       15 
     | 
    
         
            -
            # 
     | 
| 
      
 8 
     | 
    
         
            +
            # ## Example
         
     | 
| 
      
 9 
     | 
    
         
            +
            # ```ruby
         
     | 
| 
      
 10 
     | 
    
         
            +
            # require 'rcnb'
         
     | 
| 
      
 11 
     | 
    
         
            +
            # 
         
     | 
| 
      
 12 
     | 
    
         
            +
            # RCNB.encode('Who NB?')
         
     | 
| 
      
 13 
     | 
    
         
            +
            # # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
         
     | 
| 
      
 14 
     | 
    
         
            +
            # RCNB.decode('ȐĉņþƦȻƝƃŔć')
         
     | 
| 
      
 15 
     | 
    
         
            +
            # # => RCNB!
         
     | 
| 
      
 16 
     | 
    
         
            +
            # ```
         
     | 
| 
       16 
17 
     | 
    
         
             
            module RCNB
         
     | 
| 
      
 18 
     | 
    
         
            +
              # @private
         
     | 
| 
       17 
19 
     | 
    
         
             
              # :stopdoc:
         
     | 
| 
       18 
20 
     | 
    
         
             
              CR=:rRŔŕŖŗŘřƦȐȑȒȓɌɍ
         
     | 
| 
      
 21 
     | 
    
         
            +
              # @private
         
     | 
| 
       19 
22 
     | 
    
         
             
              CC=:cCĆćĈĉĊċČčƇƈÇȻȼ
         
     | 
| 
      
 23 
     | 
    
         
            +
              # @private
         
     | 
| 
       20 
24 
     | 
    
         
             
              CN=:nNŃńŅņŇňƝƞÑǸǹȠȵ
         
     | 
| 
      
 25 
     | 
    
         
            +
              # @private
         
     | 
| 
       21 
26 
     | 
    
         
             
              CB=:bBƀƁƃƄƅßÞþ
         
     | 
| 
       22 
27 
     | 
    
         | 
| 
       23 
28 
     | 
    
         
             
              def self.getIndexHash(s)
         
     | 
| 
         @@ -26,20 +31,32 @@ module RCNB 
     | 
|
| 
       26 
31 
     | 
    
         
             
              end
         
     | 
| 
       27 
32 
     | 
    
         | 
| 
       28 
33 
     | 
    
         
             
              private_class_method :getIndexHash
         
     | 
| 
      
 34 
     | 
    
         
            +
              # @private
         
     | 
| 
       29 
35 
     | 
    
         
             
              IR=getIndexHash(CR)
         
     | 
| 
      
 36 
     | 
    
         
            +
              # @private
         
     | 
| 
       30 
37 
     | 
    
         
             
              IC=getIndexHash(CC)
         
     | 
| 
      
 38 
     | 
    
         
            +
              # @private
         
     | 
| 
       31 
39 
     | 
    
         
             
              IN=getIndexHash(CN)
         
     | 
| 
      
 40 
     | 
    
         
            +
              # @private
         
     | 
| 
       32 
41 
     | 
    
         
             
              IB=getIndexHash(CB)
         
     | 
| 
       33 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
              # @private
         
     | 
| 
       34 
44 
     | 
    
         
             
              SR=CR.size
         
     | 
| 
      
 45 
     | 
    
         
            +
              # @private
         
     | 
| 
       35 
46 
     | 
    
         
             
              SC=CC.size
         
     | 
| 
      
 47 
     | 
    
         
            +
              # @private
         
     | 
| 
       36 
48 
     | 
    
         
             
              SN=CN.size
         
     | 
| 
      
 49 
     | 
    
         
            +
              # @private
         
     | 
| 
       37 
50 
     | 
    
         
             
              SB=CB.size
         
     | 
| 
       38 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
              # @private
         
     | 
| 
       39 
53 
     | 
    
         
             
              SRC=SR*SC
         
     | 
| 
      
 54 
     | 
    
         
            +
              # @private
         
     | 
| 
       40 
55 
     | 
    
         
             
              SNB=SN*SB
         
     | 
| 
      
 56 
     | 
    
         
            +
              # @private
         
     | 
| 
       41 
57 
     | 
    
         
             
              SCNB=SC*SNB
         
     | 
| 
       42 
58 
     | 
    
         
             
              # :startdoc:
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
       43 
60 
     | 
    
         
             
              def self.encodeByte(i)
         
     | 
| 
       44 
61 
     | 
    
         
             
                raise ArgumentError,'rc/nb overflow' if i>0xFF
         
     | 
| 
       45 
62 
     | 
    
         
             
                if i>0x7F
         
     | 
| 
         @@ -107,10 +124,9 @@ module RCNB 
     | 
|
| 
       107 
124 
     | 
    
         
             
              # end
         
     | 
| 
       108 
125 
     | 
    
         | 
| 
       109 
126 
     | 
    
         
             
              # 将文本编码为RCNB密文
         
     | 
| 
       110 
     | 
    
         
            -
              # [ 
     | 
| 
       111 
     | 
    
         
            -
              #  
     | 
| 
       112 
     | 
    
         
            -
              #  
     | 
| 
       113 
     | 
    
         
            -
              # [return] 密文
         
     | 
| 
      
 127 
     | 
    
         
            +
              # @param str [String] 文本
         
     | 
| 
      
 128 
     | 
    
         
            +
              # @param encoding 文本编码
         
     | 
| 
      
 129 
     | 
    
         
            +
              # @return [String] 密文
         
     | 
| 
       114 
130 
     | 
    
         
             
              def self.encode(str,encoding=nil)
         
     | 
| 
       115 
131 
     | 
    
         
             
                str=str.encode(encoding) if encoding
         
     | 
| 
       116 
132 
     | 
    
         
             
                arr=str.unpack('C*')
         
     | 
| 
         @@ -124,10 +140,9 @@ module RCNB 
     | 
|
| 
       124 
140 
     | 
    
         
             
              end
         
     | 
| 
       125 
141 
     | 
    
         | 
| 
       126 
142 
     | 
    
         
             
              # 将RCNB密文解码为文本
         
     | 
| 
       127 
     | 
    
         
            -
              # [ 
     | 
| 
       128 
     | 
    
         
            -
              #  
     | 
| 
       129 
     | 
    
         
            -
              #  
     | 
| 
       130 
     | 
    
         
            -
              # [return] 文本
         
     | 
| 
      
 143 
     | 
    
         
            +
              # @param str [String] 密文
         
     | 
| 
      
 144 
     | 
    
         
            +
              # @param encoding 文本编码
         
     | 
| 
      
 145 
     | 
    
         
            +
              # @return [String] 文本
         
     | 
| 
       131 
146 
     | 
    
         
             
              def self.decode(str,encoding=nil)
         
     | 
| 
       132 
147 
     | 
    
         
             
                raise ArgumentError,'invalid length' unless (str.size & 1).zero?
         
     | 
| 
       133 
148 
     | 
    
         
             
                arr=[]
         
     | 
    
        data/lib/rcnb/str.rb
    ADDED
    
    | 
         @@ -0,0 +1,68 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path("../../rcnb.rb",__FILE__)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module RCNB
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              # 字符串增强
         
     | 
| 
      
 6 
     | 
    
         
            +
              # ## Example
         
     | 
| 
      
 7 
     | 
    
         
            +
              # ```ruby
         
     | 
| 
      
 8 
     | 
    
         
            +
              # require 'rcnb/str'
         
     | 
| 
      
 9 
     | 
    
         
            +
              # using RCNB::Str
         
     | 
| 
      
 10 
     | 
    
         
            +
              # 
         
     | 
| 
      
 11 
     | 
    
         
            +
              # 'Who NB?'.rcnb
         
     | 
| 
      
 12 
     | 
    
         
            +
              # # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
         
     | 
| 
      
 13 
     | 
    
         
            +
              # 'ȐĉņþƦȻƝƃŔć'.rcnb_decode
         
     | 
| 
      
 14 
     | 
    
         
            +
              # # => RCNB!
         
     | 
| 
      
 15 
     | 
    
         
            +
              # 'ȐĉņþƦȻƝƃŔć'.rcnb?
         
     | 
| 
      
 16 
     | 
    
         
            +
              # # => RCNB!
         
     | 
| 
      
 17 
     | 
    
         
            +
              # 'not rcnb'.rcnb?
         
     | 
| 
      
 18 
     | 
    
         
            +
              # # => nil
         
     | 
| 
      
 19 
     | 
    
         
            +
              # ```
         
     | 
| 
      
 20 
     | 
    
         
            +
              # @note 
         
     | 
| 
      
 21 
     | 
    
         
            +
              #   使用`using RCNB::Str`来细化String类
         
     | 
| 
      
 22 
     | 
    
         
            +
              # @since 0.2.0
         
     | 
| 
      
 23 
     | 
    
         
            +
              module Str
         
     | 
| 
      
 24 
     | 
    
         
            +
                # @!method rcnb(encoding=nil)
         
     | 
| 
      
 25 
     | 
    
         
            +
                #   将字符串编码为RCNB密文
         
     | 
| 
      
 26 
     | 
    
         
            +
                #   @!scope instance
         
     | 
| 
      
 27 
     | 
    
         
            +
                #   @param encoding 文本编码
         
     | 
| 
      
 28 
     | 
    
         
            +
                #   @return [String] 密文
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @!method rcnb_decode(encoding=nil)
         
     | 
| 
      
 31 
     | 
    
         
            +
                #   将RCNB密文字符串解码
         
     | 
| 
      
 32 
     | 
    
         
            +
                #   @!scope instance
         
     | 
| 
      
 33 
     | 
    
         
            +
                #   @param encoding 文本编码
         
     | 
| 
      
 34 
     | 
    
         
            +
                #   @return [String] 解码后的文本
         
     | 
| 
      
 35 
     | 
    
         
            +
                #
         
     | 
| 
      
 36 
     | 
    
         
            +
                # @!method rcnb?(encoding=nil)
         
     | 
| 
      
 37 
     | 
    
         
            +
                #   判断字符串是否为RCNB密文
         
     | 
| 
      
 38 
     | 
    
         
            +
                #   @!scope instance
         
     | 
| 
      
 39 
     | 
    
         
            +
                #   @param encoding 文本编码
         
     | 
| 
      
 40 
     | 
    
         
            +
                #   @return [String,nil] 若是RCNB密文,则返回解码结果,否则返回nil
         
     | 
| 
      
 41 
     | 
    
         
            +
                refine String do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  
         
     | 
| 
      
 43 
     | 
    
         
            +
                  # 将字符串编码为RCNB密文
         
     | 
| 
      
 44 
     | 
    
         
            +
                  # @param encoding 文本编码
         
     | 
| 
      
 45 
     | 
    
         
            +
                  def rcnb(encoding=nil)
         
     | 
| 
      
 46 
     | 
    
         
            +
                    RCNB.encode(self,encoding)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                  # 将RCNB密文字符串解码
         
     | 
| 
      
 50 
     | 
    
         
            +
                  # @param encoding 文本编码
         
     | 
| 
      
 51 
     | 
    
         
            +
                  def rcnb_decode(encoding=nil)
         
     | 
| 
      
 52 
     | 
    
         
            +
                    RCNB.decode(self,encoding)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                  # 判断字符串是否为RCNB密文
         
     | 
| 
      
 56 
     | 
    
         
            +
                  # @param encoding 文本编码
         
     | 
| 
      
 57 
     | 
    
         
            +
                  # @return [String,nil] 若是RCNB密文,则返回解码结果,否则返回nil
         
     | 
| 
      
 58 
     | 
    
         
            +
                  def rcnb?(encoding=nil)
         
     | 
| 
      
 59 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 60 
     | 
    
         
            +
                      RCNB.decode(self,encoding)
         
     | 
| 
      
 61 
     | 
    
         
            +
                    rescue ArgumentError
         
     | 
| 
      
 62 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 63 
     | 
    
         
            +
                    end
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                end
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rcnb/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rcnb
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - liggest
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2021- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-07-16 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            email: 
         
     | 
| 
         @@ -19,6 +19,7 @@ files: 
     | 
|
| 
       19 
19 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       20 
20 
     | 
    
         
             
            - README.md
         
     | 
| 
       21 
21 
     | 
    
         
             
            - lib/rcnb.rb
         
     | 
| 
      
 22 
     | 
    
         
            +
            - lib/rcnb/str.rb
         
     | 
| 
       22 
23 
     | 
    
         
             
            - lib/rcnb/version.rb
         
     | 
| 
       23 
24 
     | 
    
         
             
            homepage: https://github.com/liggest/rcnb.rb
         
     | 
| 
       24 
25 
     | 
    
         
             
            licenses:
         
     |