rcnb 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![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
|
-
#
|
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:
|