diff --git a/README.md b/README.md index a6a07c8..9157788 100644 --- a/README.md +++ b/README.md @@ -223,6 +223,9 @@ Faker::Number.decimal(2) #=> "11.88" Faker::Number.decimal(2, 3) #=> "18.843" +# Required parameter: digits +Faker::Number.hexadecimal(3) #=> "e74" + Faker::Number.between(1, 10) #=> 7 Faker::Number.positive #=> 235.59238499107653 @@ -242,6 +245,31 @@ Faker::PhoneNumber.phone_number #=> "397.693.1309" ``` +### Faker::Hacker +--------------------- +Are you having trouble writing tech-savvy dialogue for your latest screenplay? +Worry not! Hollywood-grade technical talk is ready to fill out any form where you need to look smart. + +```crystal +# Full Phrase +Faker::Hacker.say_something_smart #=> "Try to compress the SQL interface, maybe it will program the back-end hard drive!" + +# Short technical abbreviations +Faker::Hacker.abbreviation #=> "RAM" + +# Hacker centric adjectives +Faker::Hacker.adjective #=> "open-source" + +# Only the best hacker related nouns +Faker::Hacker.noun #=> "bandwidth" + +# Actions that hackers take +Faker::Hacker.verb #=> "bypass" + +# Verbs that end in -ing +Faker::Hacker.ingverb #=> "synthesizing" +``` + ### Faker::Team ```crystal diff --git a/spec/hacker_spec.cr b/spec/hacker_spec.cr new file mode 100644 index 0000000..6391f49 --- /dev/null +++ b/spec/hacker_spec.cr @@ -0,0 +1,32 @@ +require "./spec_helper" + +describe Faker::Hacker do + assert { (Faker::Hacker.phrases.size == 8).should be_true } + + it "phrases" do + Faker::Hacker.phrases.each do |phrase| + phrase.nil?.should be_false + (phrase == "").should be_false + end + end + + it "noun" do + Faker::Hacker.noun.match(/\w+/).should_not eq nil + end + + it "abbreviation" do + Faker::Hacker.abbreviation.match(/\w+/).should_not eq nil + end + + it "adjective" do + Faker::Hacker.adjective.match(/\w+/).should_not eq nil + end + + it "verb" do + Faker::Hacker.verb.match(/\w+/).should_not eq nil + end + + it "ingverb" do + Faker::Hacker.ingverb.match(/\w+/).should_not eq nil + end +end diff --git a/src/faker/hacker.cr b/src/faker/hacker.cr new file mode 100644 index 0000000..6db0cac --- /dev/null +++ b/src/faker/hacker.cr @@ -0,0 +1,26 @@ +# Port of http://shinytoylabs.com/jargon/ +module Faker + class Hacker + def self.say_something_smart + phrases.sample + end + + {% for data_type in %w(abbreviation adjective noun verb ingverb) %} + def self.{{data_type.id}} + Faker.fetch(Data["hacker"]["{{data_type.id}}"]) + end + {% end %} + + def self.phrases + ["If we #{verb} the #{noun}, we can get to the #{abbreviation} #{noun} through the #{adjective} #{abbreviation} #{noun}!", + "We need to #{verb} the #{adjective} #{abbreviation} #{noun}!", + "Try to #{verb} the #{abbreviation} #{noun}, maybe it will #{verb} the #{adjective} #{noun}!", + "You can't #{verb} the #{noun} without #{ingverb} the #{adjective} #{abbreviation} #{noun}!", + "Use the #{adjective} #{abbreviation} #{noun}, then you can #{verb} the #{adjective} #{noun}!", + "The #{abbreviation} #{noun} is down, #{verb} the #{adjective} #{noun} so we can #{verb} the #{abbreviation} #{noun}!", + "#{ingverb} the #{noun} won't do anything, we need to #{verb} the #{adjective} #{abbreviation} #{noun}!", + "I'll #{verb} the #{adjective} #{abbreviation} #{noun}, that should #{noun} the #{abbreviation} #{noun}!", + ] + end + end +end