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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82d4a0468703176185dc596b3e2461063b47409158d69775b4e4691acad53992
4
- data.tar.gz: ea815585427f99a094e58447d789b424187677767666d6a49cc6772aabe12ce6
3
+ metadata.gz: dc00399dbaaa07059d89706fcd1fd3da1879bbb1f9c7705ed2d3f3ae3ad303b8
4
+ data.tar.gz: cf1e4013967904175450ec6ca403222f513873aaf385c967726d31a218cd5a7e
5
5
  SHA512:
6
- metadata.gz: e28c283e4c9b445e1f26958739632c8c58ef40e751733813c21af19ad7d206c4dfebaab8b8640addc5363d2837dc8bc36efbc3a4ba0783dbb9e23acdef42b678
7
- data.tar.gz: 38e9dd00f4bde23241a7e09483e57d48b51c4ce354f6b9f3a2e7089c7c5874496ed7d9b8c31e572c7e9c21d4861115802fb95f9fcdf97b3c1a41a64c12796304
6
+ metadata.gz: f32bec5c338eeed5aea9bb335d9c89525d115224462a6aa2929ae617596907eabb99b0d020d0f1958aa682ce67d46399bfefec6c14743e19589913fbd5a8f75a
7
+ data.tar.gz: 39fb82d34ee859285180a5732047e2bed6f380209fd63512cd56489f9cc8ddcca25084cd0262be800c55250cb5b40df15a70f53650fc83bc97af4f3a2daa45f8
data/README.md CHANGED
@@ -1,3 +1,43 @@
1
1
  # rcnb.rb
2
2
 
3
- A ruby implementation of RCNB
3
+ [![gem_shield](https://img.shields.io/gem/v/rcnb?color=%23fa0000)](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
- # = rcnb
2
+ # # rcnb
3
3
  # A ruby implementation of RCNB
4
4
  # ---
5
5
 
6
6
  # RCNB模块
7
7
  #
8
- # == Example
9
- # require 'rcnb'
10
- #
11
- # RCNB.encode('Who NB?')
12
- # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
13
- #
14
- # RCNB.decode('ȐĉņþƦȻƝƃŔć')
15
- # => RCNB!
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
- # [str] 文本
111
- # [encoding] 文本编码
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
- # [str] 密文
128
- # [encoding] 文本编码
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
@@ -1,3 +1,4 @@
1
1
  module RCNB
2
- VERSION='0.1.0'
2
+ # @private
3
+ VERSION='0.2.0'
3
4
  end
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.1.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-06-17 00:00:00.000000000 Z
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: