Module: RFauxFactory

Defined in:
lib/rfauxfactory.rb,
lib/rfauxfactory/version.rb,
lib/rfauxfactory/constants.rb

Overview

The python FauxFactory port

Constant Summary collapse

VERSION =
"0.1.1".freeze
MAX_INT =
2**(1.size * 8 - 2) - 1
MIN_INT =
- 1
ASCII_LOWERCASE =
'abcdefghijklmnopqrstuvwxyz'.freeze
ASCII_UPPERCASE =
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.freeze
PUNCTUATION =
%q(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).freeze
ASCII_LETTERS =
ASCII_LOWERCASE + ASCII_UPPERCASE
DIGITS =
'0123456789'.freeze
ALPHANUMERIC =
ASCII_LETTERS + DIGITS
HTML_TAGS =
%w[
  a abbr acronym address applet area b
  base basefont bdo big blink blockquote body br
  button caption center cite code col colgroup
  dd del dfn dir div dl dt
  em fieldset font form frame frameset h1
  h2 h3 h4 h5 h6 head hr
  html i iframe img input ins isindex
  kbd label legend li link map menu
  meta noframes noscript object ol optgroup option
  p param pre q s samp script
  select small span strike strong style sub
  sup table tbody td textarea tfoot th
  thead title tr tt u ul var
].freeze
CJK_LETTERS_RANGE =
(0x4E00..0x9FCC)
CYRILLIC_LETTERS_RANGE =
(0x0400..0x04FF)
UNICODE_LETTERS_RANGES =
[
  (65..90),
  (97..122),
  (170..170),
  (181..181),
  (186..186),
  (192..214),
  (216..246),
  (248..705),
  (710..721),
  (736..740),
  (748..748),
  (750..750),
  (880..884),
  (886..887),
  (890..893),
  (895..895),
  (902..902),
  (904..906),
  (908..908),
  (910..929),
  (931..1013),
  (1015..1153),
  (1162..1327),
  (1329..1366),
  (1369..1369),
  (1377..1415),
  (1488..1514),
  (1520..1522),
  (1568..1610),
  (1646..1647),
  (1649..1747),
  (1749..1749),
  (1765..1766),
  (1774..1775),
  (1786..1788),
  (1791..1791),
  (1808..1808),
  (1810..1839),
  (1869..1957),
  (1969..1969),
  (1994..2026),
  (2036..2037),
  (2042..2042),
  (2048..2069),
  (2074..2074),
  (2084..2084),
  (2088..2088),
  (2112..2136),
  (2208..2228),
  (2230..2237),
  (2308..2361),
  (2365..2365),
  (2384..2384),
  (2392..2401),
  (2417..2432),
  (2437..2444),
  (2447..2448),
  (2451..2472),
  (2474..2480),
  (2482..2482),
  (2486..2489),
  (2493..2493),
  (2510..2510),
  (2524..2525),
  (2527..2529),
  (2544..2545),
  (2565..2570),
  (2575..2576),
  (2579..2600),
  (2602..2608),
  (2610..2611),
  (2613..2614),
  (2616..2617),
  (2649..2652),
  (2654..2654),
  (2674..2676),
  (2693..2701),
  (2703..2705),
  (2707..2728),
  (2730..2736),
  (2738..2739),
  (2741..2745),
  (2749..2749),
  (2768..2768),
  (2784..2785),
  (2809..2809),
  (2821..2828),
  (2831..2832),
  (2835..2856),
  (2858..2864),
  (2866..2867),
  (2869..2873),
  (2877..2877),
  (2908..2909),
  (2911..2913),
  (2929..2929),
  (2947..2947),
  (2949..2954),
  (2958..2960),
  (2962..2965),
  (2969..2970),
  (2972..2972),
  (2974..2975),
  (2979..2980),
  (2984..2986),
  (2990..3001),
  (3024..3024),
  (3077..3084),
  (3086..3088),
  (3090..3112),
  (3114..3129),
  (3133..3133),
  (3160..3162),
  (3168..3169),
  (3200..3200),
  (3205..3212),
  (3214..3216),
  (3218..3240),
  (3242..3251),
  (3253..3257),
  (3261..3261),
  (3294..3294),
  (3296..3297),
  (3313..3314),
  (3333..3340),
  (3342..3344),
  (3346..3386),
  (3389..3389),
  (3406..3406),
  (3412..3414),
  (3423..3425),
  (3450..3455),
  (3461..3478),
  (3482..3505),
  (3507..3515),
  (3517..3517),
  (3520..3526),
  (3585..3632),
  (3634..3635),
  (3648..3654),
  (3713..3714),
  (3716..3716),
  (3719..3720),
  (3722..3722),
  (3725..3725),
  (3732..3735),
  (3737..3743),
  (3745..3747),
  (3749..3749),
  (3751..3751),
  (3754..3755),
  (3757..3760),
  (3762..3763),
  (3773..3773),
  (3776..3780),
  (3782..3782),
  (3804..3807),
  (3840..3840),
  (3904..3911),
  (3913..3948),
  (3976..3980),
  (4096..4138),
  (4159..4159),
  (4176..4181),
  (4186..4189),
  (4193..4193),
  (4197..4198),
  (4206..4208),
  (4213..4225),
  (4238..4238),
  (4256..4293),
  (4295..4295),
  (4301..4301),
  (4304..4346),
  (4348..4680),
  (4682..4685),
  (4688..4694),
  (4696..4696),
  (4698..4701),
  (4704..4744),
  (4746..4749),
  (4752..4784),
  (4786..4789),
  (4792..4798),
  (4800..4800),
  (4802..4805),
  (4808..4822),
  (4824..4880),
  (4882..4885),
  (4888..4954),
  (4992..5007),
  (5024..5109),
  (5112..5117),
  (5121..5740),
  (5743..5759),
  (5761..5786),
  (5792..5866),
  (5873..5880),
  (5888..5900),
  (5902..5905),
  (5920..5937),
  (5952..5969),
  (5984..5996),
  (5998..6000),
  (6016..6067),
  (6103..6103),
  (6108..6108),
  (6176..6263),
  (6272..6276),
  (6279..6312),
  (6314..6314),
  (6320..6389),
  (6400..6430),
  (6480..6509),
  (6512..6516),
  (6528..6571),
  (6576..6601),
  (6656..6678),
  (6688..6740),
  (6823..6823),
  (6917..6963),
  (6981..6987),
  (7043..7072),
  (7086..7087),
  (7098..7141),
  (7168..7203),
  (7245..7247),
  (7258..7293),
  (7296..7304),
  (7401..7404),
  (7406..7409),
  (7413..7414),
  (7424..7615),
  (7680..7957),
  (7960..7965),
  (7968..8005),
  (8008..8013),
  (8016..8023),
  (8025..8025),
  (8027..8027),
  (8029..8029),
  (8031..8061),
  (8064..8116),
  (8118..8124),
  (8126..8126),
  (8130..8132),
  (8134..8140),
  (8144..8147),
  (8150..8155),
  (8160..8172),
  (8178..8180),
  (8182..8188),
  (8305..8305),
  (8319..8319),
  (8336..8348),
  (8450..8450),
  (8455..8455),
  (8458..8467),
  (8469..8469),
  (8473..8477),
  (8484..8484),
  (8486..8486),
  (8488..8488),
  (8490..8493),
  (8495..8505),
  (8508..8511),
  (8517..8521),
  (8526..8526),
  (8579..8580),
  (11264..11310),
  (11312..11358),
  (11360..11492),
  (11499..11502),
  (11506..11507),
  (11520..11557),
  (11559..11559),
  (11565..11565),
  (11568..11623),
  (11631..11631),
  (11648..11670),
  (11680..11686),
  (11688..11694),
  (11696..11702),
  (11704..11710),
  (11712..11718),
  (11720..11726),
  (11728..11734),
  (11736..11742),
  (11823..11823),
  (12293..12294),
  (12337..12341),
  (12347..12348),
  (12353..12438),
  (12445..12447),
  (12449..12538),
  (12540..12543),
  (12549..12589),
  (12593..12686),
  (12704..12730),
  (12784..12799),
  (13312..19893),
  (19968..40917),
  (40960..42124),
  (42192..42237),
  (42240..42508),
  (42512..42527),
  (42538..42539),
  (42560..42606),
  (42623..42653),
  (42656..42725),
  (42775..42783),
  (42786..42888),
  (42891..42926),
  (42928..42935),
  (42999..43009),
  (43011..43013),
  (43015..43018),
  (43020..43042),
  (43072..43123),
  (43138..43187),
  (43250..43255),
  (43259..43259),
  (43261..43261),
  (43274..43301),
  (43312..43334),
  (43360..43388),
  (43396..43442),
  (43471..43471),
  (43488..43492),
  (43494..43503),
  (43514..43518),
  (43520..43560),
  (43584..43586),
  (43588..43595),
  (43616..43638),
  (43642..43642),
  (43646..43695),
  (43697..43697),
  (43701..43702),
  (43705..43709),
  (43712..43712),
  (43714..43714),
  (43739..43741),
  (43744..43754),
  (43762..43764),
  (43777..43782),
  (43785..43790),
  (43793..43798),
  (43808..43814),
  (43816..43822),
  (43824..43866),
  (43868..43877),
  (43888..44002),
  (44032..55203),
  (55216..55238),
  (55243..55291),
  (63744..64109),
  (64112..64217),
  (64256..64262),
  (64275..64279),
  (64285..64285),
  (64287..64296),
  (64298..64310),
  (64312..64316),
  (64318..64318),
  (64320..64321),
  (64323..64324),
  (64326..64433),
  (64467..64829),
  (64848..64911),
  (64914..64967),
  (65008..65019),
  (65136..65140),
  (65142..65276),
  (65313..65338),
  (65345..65370),
  (65382..65470),
  (65474..65479),
  (65482..65487),
  (65490..65495),
  (65498..65500),
  (65536..65547),
  (65549..65574),
  (65576..65594),
  (65596..65597),
  (65599..65613),
  (65616..65629),
  (65664..65786),
  (66176..66204),
  (66208..66256),
  (66304..66335),
  (66352..66368),
  (66370..66377),
  (66384..66421),
  (66432..66461),
  (66464..66499),
  (66504..66511),
  (66560..66717),
  (66736..66771),
  (66776..66811),
  (66816..66855),
  (66864..66915),
  (67072..67382),
  (67392..67413),
  (67424..67431),
  (67584..67589),
  (67592..67592),
  (67594..67637),
  (67639..67640),
  (67644..67644),
  (67647..67669),
  (67680..67702),
  (67712..67742),
  (67808..67826),
  (67828..67829),
  (67840..67861),
  (67872..67897),
  (67968..68023),
  (68030..68031),
  (68096..68096),
  (68112..68115),
  (68117..68119),
  (68121..68147),
  (68192..68220),
  (68224..68252),
  (68288..68295),
  (68297..68324),
  (68352..68405),
  (68416..68437),
  (68448..68466),
  (68480..68497),
  (68608..68680),
  (68736..68786),
  (68800..68850),
  (69635..69687),
  (69763..69807),
  (69840..69864),
  (69891..69926),
  (69968..70002),
  (70006..70006),
  (70019..70066),
  (70081..70084),
  (70106..70106),
  (70108..70108),
  (70144..70161),
  (70163..70187),
  (70272..70278),
  (70280..70280),
  (70282..70285),
  (70287..70301),
  (70303..70312),
  (70320..70366),
  (70405..70412),
  (70415..70416),
  (70419..70440),
  (70442..70448),
  (70450..70451),
  (70453..70457),
  (70461..70461),
  (70480..70480),
  (70493..70497),
  (70656..70708),
  (70727..70730),
  (70784..70831),
  (70852..70853),
  (70855..70855),
  (71040..71086),
  (71128..71131),
  (71168..71215),
  (71236..71236),
  (71296..71338),
  (71424..71449),
  (71840..71903),
  (71935..71935),
  (72384..72440),
  (72704..72712),
  (72714..72750),
  (72768..72768),
  (72818..72847),
  (73728..74649),
  (74880..75075),
  (77824..78894),
  (82944..83526),
  (92160..92728),
  (92736..92766),
  (92880..92909),
  (92928..92975),
  (92992..92995),
  (93027..93047),
  (93053..93071),
  (93952..94020),
  (94032..94032),
  (94099..94111),
  (94176..94176),
  (94208..100332),
  (100352..101106),
  (110592..110593),
  (113664..113770),
  (113776..113788),
  (113792..113800),
  (113808..113817),
  (119808..119892),
  (119894..119964),
  (119966..119967),
  (119970..119970),
  (119973..119974),
  (119977..119980),
  (119982..119993),
  (119995..119995),
  (119997..120003),
  (120005..120069),
  (120071..120074),
  (120077..120084),
  (120086..120092),
  (120094..120121),
  (120123..120126),
  (120128..120132),
  (120134..120134),
  (120138..120144),
  (120146..120485),
  (120488..120512),
  (120514..120538),
  (120540..120570),
  (120572..120596),
  (120598..120628),
  (120630..120654),
  (120656..120686),
  (120688..120712),
  (120714..120744),
  (120746..120770),
  (120772..120779),
  (124928..125124),
  (125184..125251),
  (126464..126467),
  (126469..126495),
  (126497..126498),
  (126500..126500),
  (126503..126503),
  (126505..126514),
  (126516..126519),
  (126521..126521),
  (126523..126523),
  (126530..126530),
  (126535..126535),
  (126537..126537),
  (126539..126539),
  (126541..126543),
  (126545..126546),
  (126548..126548),
  (126551..126551),
  (126553..126553),
  (126555..126555),
  (126557..126557),
  (126559..126559),
  (126561..126562),
  (126564..126564),
  (126567..126570),
  (126572..126578),
  (126580..126583),
  (126585..126588),
  (126590..126590),
  (126592..126601),
  (126603..126619),
  (126625..126627),
  (126629..126633),
  (126635..126651),
  (131072..173782),
  (173824..177972),
  (177984..178205),
  (178208..183969),
  (194560..195101)
].freeze
UNICODE_LETTERS =
UNICODE_LETTERS_RANGES.map do |urange|
  urange.map do |codepoint|
    codepoint.chr(Encoding::UTF_8)
  end
end.flatten
LATIN_LETTERS_RANGES =
[
  (0x00C0..0x00D6),
  (0x00D8..0x00F6),
  (0x00F8..0x00FF)
].freeze
LATIN_LETTERS =
LATIN_LETTERS_RANGES.map do |latin_range|
  latin_range.map do |codepoint|
    codepoint.chr(Encoding::UTF_8)
  end
end.flatten

Class Method Summary collapse

Class Method Details

.gen_alpha(length = 10) ⇒ Object

Returns a random string made up of alpha characters.



31
32
33
34
# File 'lib/rfauxfactory.rb', line 31

def gen_alpha(length = 10)
  positive_int! length
  gen_string_from_letters length, ASCII_LETTERS
end

.gen_alphanumeric(length = 10) ⇒ Object

Returns a random string made up of alpha and numeric characters.



37
38
39
40
# File 'lib/rfauxfactory.rb', line 37

def gen_alphanumeric(length = 10)
  positive_int! length
  gen_string_from_letters length, ALPHANUMERIC
end

.gen_booleanObject

Return a random Boolean value.



102
103
104
# File 'lib/rfauxfactory.rb', line 102

def gen_boolean
  [true, false].sample
end

.gen_cjk(length = 10) ⇒ Object

Returns a random string made up of CJK characters.



43
44
45
46
# File 'lib/rfauxfactory.rb', line 43

def gen_cjk(length = 10)
  positive_int! length
  gen_string_from_cp_range length, CJK_LETTERS_RANGE
end

.gen_cyrillic(length = 10) ⇒ Object

Returns a random string made up of Cyrillic characters.



61
62
63
64
# File 'lib/rfauxfactory.rb', line 61

def gen_cyrillic(length = 10)
  positive_int! length
  gen_string_from_cp_range length, CYRILLIC_LETTERS_RANGE
end

.gen_html(length = 10) ⇒ Object

Returns a random string made up of html characters.



73
74
75
76
77
# File 'lib/rfauxfactory.rb', line 73

def gen_html(length = 10)
  positive_int! length
  html_tag = HTML_TAGS.sample
  "<#{html_tag}>#{gen_alpha(length)}</#{html_tag}>"
end

.gen_latin1(length = 10) ⇒ Object

Returns a random string made up of UTF-8 characters. (Font: Wikipedia - Latin-1 Supplement Unicode Block)



55
56
57
58
# File 'lib/rfauxfactory.rb', line 55

def gen_latin1(length = 10)
  positive_int! length
  gen_string_from_letters length, LATIN_LETTERS
end

.gen_numeric_string(length = 10) ⇒ Object

Returns a random string made up of numbers.



67
68
69
70
# File 'lib/rfauxfactory.rb', line 67

def gen_numeric_string(length = 10)
  positive_int! length
  gen_string_from_letters length, DIGITS
end

.gen_special(length = 10) ⇒ Object



79
80
81
82
# File 'lib/rfauxfactory.rb', line 79

def gen_special(length = 10)
  positive_int! length
  gen_string_from_letters length, PUNCTUATION
end

.gen_string(str_type, length = 10) ⇒ Object

A simple wrapper that calls other string generation methods.

Raises:

  • (ArgumentError)


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/rfauxfactory.rb', line 85

def gen_string(str_type, length = 10)
  func_str_types = {
    'alpha': :gen_alpha,
    'alphanumeric': :gen_alphanumeric,
    'cjk': :gen_cjk,
    'cyrillic': :gen_cyrillic,
    'html': :gen_html,
    'latin1': :gen_latin1,
    'numeric': :gen_numeric_string,
    'utf8': :gen_utf8,
    'punctuation': :gen_special
  }
  raise ArgumentError, "str_type: #{str_type} not supported" unless func_str_types.key?(str_type)
  send(func_str_types[str_type], length)
end

.gen_utf8(length = 10) ⇒ Object



48
49
50
51
# File 'lib/rfauxfactory.rb', line 48

def gen_utf8(length = 10)
  positive_int! length
  gen_string_from_letters length, UNICODE_LETTERS
end