ffaker 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
@@ -0,0 +1,26 @@
1
+ == 0.3.2 2010-01-14
2
+ * Several Optimizations, renamed gem packege to ffaker.
3
+
4
+ == 0.3.1 2008-04-03
5
+ * 1 minor enhancement:
6
+ * Added city to Address
7
+
8
+ == 0.3.0 2008-01-01
9
+ * 3 major enhancements:
10
+ * Added Lorem to generate fake Latin
11
+ * Added secondary_address to Address, and made inclusion of
12
+ secondary address in street_address optional (false by
13
+ default).
14
+ * Added UK address methods [Caius Durling]
15
+
16
+ == 0.2.1 2007-12-05
17
+ * 1 major enhancement:
18
+ * Dropped facets to avoid conflict with ActiveSupport
19
+ * 2 minor enhancements:
20
+ * Changed the output of user_name to randomly separate with a . or _
21
+ * Added a few tests
22
+
23
+ == 0.1.0 2007-11-22
24
+
25
+ * 1 major enhancement:
26
+ * Initial release
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2010 Emmanuel Oga
2
+ Copyright (c) 2007 Benjamin Curtis
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,37 @@
1
+ = ffaker
2
+
3
+ Fast Faker == Faker refactored, cleaner and faster.
4
+
5
+ = Faker
6
+
7
+ A port of Perl's Data::Faker library that generates fake data.
8
+
9
+ == Usage
10
+
11
+ * Faker::Name.name => "Christophe Bartell"
12
+
13
+ * Faker::Internet.email => "kirsten.greenholt@corkeryfisher.info"
14
+
15
+ == Ffaker / Faker ==
16
+
17
+ This version of the gem was modified by me (Emmanuel Oga) cause I was
18
+ so annoyed on several ineficiencies on the original gem.
19
+
20
+ And because I coult not find the original author on github (and I
21
+ don't feel like working with the arcane rubyforge+svn tools) I
22
+ just realised this gem using a different name.
23
+
24
+ == Note on Patches/Pull Requests
25
+
26
+ * Fork the project.
27
+ * Make your feature addition or bug fix.
28
+ * Add tests for it. This is important so I don't break it in a
29
+ future version unintentionally.
30
+ * Commit, do not mess with rakefile, version, or history.
31
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
32
+ * Send me a pull request. Bonus points for topic branches.
33
+
34
+ == Copyright
35
+
36
+ Copyright (c) 2007 Benjamin Curtis
37
+ Copyright (c) 2010 Emmanuel Oga. See LICENSE for details.
File without changes
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "ffaker"
8
+ gem.summary = %Q{Faker, only cleaner and faster}
9
+ gem.description = %Q{Faker refactored}
10
+ gem.email = "EmmanuelOga@gmail.com"
11
+ gem.homepage = "http://github.com/EmmanuelOga/ffaker"
12
+ gem.authors = ["Emmanuel Oga"]
13
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
+ end
15
+ Jeweler::GemcutterTasks.new
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
18
+ end
19
+
20
+ require 'rake/testtask'
21
+ Rake::TestTask.new(:test) do |test|
22
+ test.libs << 'lib' << 'test'
23
+ test.pattern = 'test/**/test_*.rb'
24
+ test.verbose = true
25
+ end
26
+
27
+ begin
28
+ require 'rcov/rcovtask'
29
+ Rcov::RcovTask.new do |test|
30
+ test.libs << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+ rescue LoadError
35
+ task :rcov do
36
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
+ end
38
+ end
39
+
40
+ task :test => :check_dependencies
41
+
42
+ task :default => :test
43
+
44
+ require 'rake/rdoctask'
45
+ Rake::RDocTask.new do |rdoc|
46
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
47
+
48
+ rdoc.rdoc_dir = 'rdoc'
49
+ rdoc.title = "ffaker #{version}"
50
+ rdoc.rdoc_files.include('README*')
51
+ rdoc.rdoc_files.include('lib/**/*.rb')
52
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.3.2
@@ -0,0 +1,29 @@
1
+ module Faker
2
+ require 'faker/utils/module_utils'
3
+
4
+ extend ModuleUtils
5
+
6
+ LETTERS = k('a'..'z')
7
+
8
+ def self.numerify(number_string)
9
+ number_string.gsub!(/#/) { rand(10).to_s }
10
+ number_string
11
+ end
12
+
13
+ def self.letterify(letter_string)
14
+ letter_string.gsub!(/\?/) { LETTERS.rand }
15
+ letter_string
16
+ end
17
+
18
+ def self.bothify(string)
19
+ letterify(numerify(string))
20
+ end
21
+
22
+ autoload :Address, 'faker/address'
23
+ autoload :Company, 'faker/company'
24
+ autoload :Internet, 'faker/internet'
25
+ autoload :Lorem, 'faker/lorem'
26
+ autoload :Name, 'faker/name'
27
+ autoload :PhoneNumber, 'faker/phone_number'
28
+ autoload :VERSION, 'faker/version'
29
+ end
@@ -0,0 +1,143 @@
1
+ module Faker
2
+ module Address
3
+ extend ModuleUtils
4
+ extend self
5
+
6
+ def zip_code
7
+ Faker.numerify ZIP_FORMATS.rand
8
+ end
9
+
10
+ def us_state
11
+ STATE.rand
12
+ end
13
+
14
+ def us_state_abbr
15
+ STATE_ABBR.rand
16
+ end
17
+
18
+ def city_prefix
19
+ CITY_PREFIXES.rand
20
+ end
21
+
22
+ def city_suffix
23
+ CITY_SUFFIXES.rand
24
+ end
25
+
26
+ def city
27
+ case rand(4)
28
+ when 0 then '%s %s%s' % [city_prefix, Name.first_name, city_suffix]
29
+ when 1 then '%s %s' % [city_prefix, Name.first_name]
30
+ when 2 then '%s%s' % [Name.first_name, city_suffix]
31
+ when 3 then '%s%s' % [Name.last_name, city_suffix]
32
+ end
33
+ end
34
+
35
+ def street_suffix
36
+ STREET_SUFFIX.rand
37
+ end
38
+
39
+ def street_name
40
+ case rand(2)
41
+ when 0 then "#{Name.last_name}#{street_suffix}"
42
+ when 1 then "#{Name.first_name}#{street_suffix}"
43
+ end
44
+ end
45
+
46
+ def street_address(include_secondary = false)
47
+ str = case rand(3)
48
+ when 0 then '##### %s' % street_name
49
+ when 1 then '#### %s' % street_name
50
+ when 2 then '### %s' % street_name
51
+ end
52
+
53
+ str << ' ' << secondary_address if include_secondary
54
+
55
+ Faker.numerify(str)
56
+ end
57
+
58
+ def secondary_address
59
+ Faker.numerify(SEC_ADDR.rand)
60
+ end
61
+
62
+ # UK Variants
63
+ def uk_county
64
+ UK_COUNTY.rand
65
+ end
66
+
67
+ def uk_country
68
+ UK_COUNTRY.rand
69
+ end
70
+
71
+ def uk_postcode
72
+ Faker.bothify(UK_POSTCODE.rand).upcase
73
+ end
74
+
75
+ ZIP_FORMATS = k ['#####', '#####-####']
76
+
77
+ STATE = k ['Alabama', 'Alaska', 'Arizona', 'Arkansas',
78
+ 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida',
79
+ 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas',
80
+ 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts',
81
+ 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana',
82
+ 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York',
83
+ 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon',
84
+ 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota',
85
+ 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington',
86
+ 'West Virginia', 'Wisconsin', 'Wyoming']
87
+
88
+ STATE_ABBR = k %w(AL AK AS AZ AR CA CO CT DE DC FM FL GA GU HI ID IL IN IA
89
+ KS KY LA ME MH MD MA MI MN MS MO MT NE NV NH NJ NM NY NC
90
+ ND MP OH OK OR PW PA PR RI SC SD TN TX UT VT VI VA WA WV
91
+ WI WY AE AA AP)
92
+
93
+ CITY_PREFIXES = k %w(North East West South New Lake Port)
94
+
95
+ CITY_SUFFIXES = k %w(town ton land ville berg burgh borough bury view port
96
+ mouth stad furt chester mouth fort haven side shire)
97
+
98
+ STREET_SUFFIX = k %w(Alley Avenue Branch Bridge Brook Brooks
99
+ Burg Burgs Bypass Camp Canyon Cape Causeway Center Centers Circle Circles
100
+ Cliff Cliffs Club Common Corner Corners Course Court Courts Cove Coves
101
+ Creek Crescent Crest Crossing Crossroad Curve Dale Dam Divide Drive Drive
102
+ Drives Estate Estates Expressway Extension Extensions Fall Falls Ferry
103
+ Field Fields Flat Flats Ford Fords Forest Forge Forges Fork Forks Fort
104
+ Freeway Garden Gardens Gateway Glen Glens Green Greens Grove Groves Harbor
105
+ Harbors Haven Heights Highway Hill Hills Hollow Inlet Inlet Island Island
106
+ Islands Islands Isle Isle Junction Junctions Key Keys Knoll Knolls Lake
107
+ Lakes Land Landing Lane Light Lights Loaf Lock Locks Locks Lodge Lodge Loop
108
+ Mall Manor Manors Meadow Meadows Mews Mill Mills Mission Mission Motorway
109
+ Mount Mountain Mountain Mountains Mountains Neck Orchard Oval Overpass Park
110
+ Parks Parkway Parkways Pass Passage Path Pike Pine Pines Place Plain Plains
111
+ Plains Plaza Plaza Point Points Port Port Ports Ports Prairie Prairie
112
+ Radial Ramp Ranch Rapid Rapids Rest Ridge Ridges River Road Road Roads
113
+ Roads Route Row Rue Run Shoal Shoals Shore Shores Skyway Spring Springs
114
+ Springs Spur Spurs Square Square Squares Squares Station Station Stravenue
115
+ Stravenue Stream Stream Street Street Streets Summit Summit Terrace
116
+ Throughway Trace Track Trafficway Trail Trail Tunnel Tunnel Turnpike
117
+ Turnpike Underpass Union Unions Valley Valleys Via Viaduct View Views
118
+ Village Village Villages Ville Vista Vista Walk Walks Wall Way Ways Well
119
+ Wells)
120
+
121
+ SEC_ADDR = k ['Apt. ###', 'Suite ###']
122
+
123
+ UK_COUNTY = k ['Avon', 'Bedfordshire', 'Berkshire', 'Borders',
124
+ 'Buckinghamshire', 'Cambridgeshire', 'Central', 'Cheshire', 'Cleveland',
125
+ 'Clwyd', 'Cornwall', 'County Antrim', 'County Armagh', 'County Down',
126
+ 'County Fermanagh', 'County Londonderry', 'County Tyrone', 'Cumbria',
127
+ 'Derbyshire', 'Devon', 'Dorset', 'Dumfries and Galloway', 'Durham',
128
+ 'Dyfed', 'East Sussex', 'Essex', 'Fife', 'Gloucestershire', 'Grampian',
129
+ 'Greater Manchester', 'Gwent', 'Gwynedd County', 'Hampshire',
130
+ 'Herefordshire', 'Hertfordshire', 'Highlands and Islands', 'Humberside',
131
+ 'Isle of Wight', 'Kent', 'Lancashire', 'Leicestershire', 'Lincolnshire',
132
+ 'Lothian', 'Merseyside', 'Mid Glamorgan', 'Norfolk', 'North Yorkshire',
133
+ 'Northamptonshire', 'Northumberland', 'Nottinghamshire', 'Oxfordshire',
134
+ 'Powys', 'Rutland', 'Shropshire', 'Somerset', 'South Glamorgan',
135
+ 'South Yorkshire', 'Staffordshire', 'Strathclyde', 'Suffolk', 'Surrey',
136
+ 'Tayside', 'Tyne and Wear', 'Warwickshire', 'West Glamorgan', 'West Midlands',
137
+ 'West Sussex', 'West Yorkshire', 'Wiltshire', 'Worcestershire']
138
+
139
+ UK_COUNTRY = k ['England', 'Scotland', 'Wales', 'Northern Ireland']
140
+
141
+ UK_POSTCODE = k ['??# #??', '??## #??']
142
+ end
143
+ end
@@ -0,0 +1,140 @@
1
+ module Faker
2
+ module Company
3
+ extend ModuleUtils
4
+ extend self
5
+
6
+ def name
7
+ case rand(3)
8
+ when 0 then "#{Name.last_name} #{suffix}"
9
+ when 1 then "#{Name.last_name}-#{Name.last_name}"
10
+ when 2 then "%s, %s and %s" % [ Name.last_name, Name.last_name, Name.last_name ]
11
+ end
12
+ end
13
+
14
+ def suffix
15
+ SUFFIXES.rand
16
+ end
17
+
18
+ # Generate a buzzword-laden catch phrase.
19
+ # Wordlist from http://www.1728.com/buzzword.htm
20
+ def catch_phrase
21
+ "#{CATCH_MID.rand}#{CATCH_MID.rand}#{CATCH_POS.rand}"
22
+ end
23
+
24
+ # When a straight answer won't do, BS to the rescue!
25
+ # Wordlist from http://dack.com/web/bullshit.html
26
+ def bs
27
+ "#{BS_MID.rand}#{BS_MID.rand}#{BS_POS.rand}"
28
+ end
29
+
30
+ SUFFIXES = k %w(Inc and\ Sons LLC Group)
31
+
32
+ CATCH_PRE = k ["Adaptive", "Advanced", "Ameliorated", "Assimilated",
33
+ "Automated", "Balanced", "Business-focused", "Centralized", "Cloned",
34
+ "Compatible", "Configurable", "Cross-group", "Cross-platform",
35
+ "Customer-focused", "Customizable", "Decentralized", "De-engineered",
36
+ "Devolved", "Digitized", "Distributed", "Diverse", "Down-sized",
37
+ "Enhanced", "Enterprise-wide", "Ergonomic", "Exclusive", "Expanded",
38
+ "Extended", "Face to face", "Focused", "Front-line",
39
+ "Fully-configurable", "Function-based", "Fundamental", "Future-proofed",
40
+ "Grass-roots", "Horizontal", "Implemented", "Innovative", "Integrated",
41
+ "Intuitive", "Inverse", "Managed", "Mandatory", "Monitored",
42
+ "Multi-channelled", "Multi-lateral", "Multi-layered", "Multi-tiered",
43
+ "Networked", "Object-based", "Open-architected", "Open-source",
44
+ "Operative", "Optimized", "Optional", "Organic", "Organized",
45
+ "Persevering", "Persistent", "Phased", "Polarised", "Pre-emptive",
46
+ "Proactive", "Profit-focused", "Profound", "Programmable", "Progressive",
47
+ "Public-key", "Quality-focused", "Reactive", "Realigned",
48
+ "Re-contextualized", "Re-engineered", "Reduced", "Reverse-engineered",
49
+ "Right-sized", "Robust", "Seamless", "Secured", "Self-enabling",
50
+ "Sharable", "Stand-alone", "Streamlined", "Switchable", "Synchronised",
51
+ "Synergistic", "Synergized", "Team-oriented", "Total", "Triple-buffered",
52
+ "Universal", "Up-sized", "Upgradable", "User-centric", "User-friendly",
53
+ "Versatile", "Virtual", "Visionary", "Vision-oriented"]
54
+
55
+ CATCH_MID = k ["24 hour", "24/7", "3rd generation", "4th generation",
56
+ "5th generation", "6th generation", "actuating", "analyzing", "assymetric",
57
+ "asynchronous", "attitude-oriented", "background", "bandwidth-monitored",
58
+ "bi-directional", "bifurcated", "bottom-line", "clear-thinking",
59
+ "client-driven", "client-server", "coherent", "cohesive", "composite",
60
+ "context-sensitive", "contextually-based", "content-based", "dedicated",
61
+ "demand-driven", "didactic", "directional", "discrete", "disintermediate",
62
+ "dynamic", "eco-centric", "empowering", "encompassing", "even-keeled",
63
+ "executive", "explicit", "exuding", "fault-tolerant", "foreground",
64
+ "fresh-thinking", "full-range", "global", "grid-enabled", "heuristic",
65
+ "high-level", "holistic", "homogeneous", "human-resource", "hybrid",
66
+ "impactful", "incremental", "intangible", "interactive", "intermediate",
67
+ "leading edge", "local", "logistical", "maximized", "methodical",
68
+ "mission-critical", "mobile", "modular", "motivating", "multimedia",
69
+ "multi-state", "multi-tasking", "national", "needs-based", "neutral",
70
+ "next generation", "non-volatile", "object-oriented", "optimal", "optimizing",
71
+ "radical", "real-time", "reciprocal", "regional", "responsive", "scalable",
72
+ "secondary", "solution-oriented", "stable", "static", "systematic",
73
+ "systemic", "system-worthy", "tangible", "tertiary", "transitional",
74
+ "uniform", "upward-trending", "user-facing", "value-added", "web-enabled",
75
+ "well-modulated", "zero administration", "zero defect", "zero tolerance"]
76
+
77
+ CATCH_POS = k ["ability", "access", "adapter", "algorithm", "alliance",
78
+ "analyzer", "application", "approach", "architecture", "archive",
79
+ "artificial intelligence", "array", "attitude", "benchmark",
80
+ "budgetary management", "capability", "capacity", "challenge", "circuit",
81
+ "collaboration", "complexity", "concept", "conglomeration",
82
+ "contingency", "core", "customer loyalty", "database",
83
+ "data-warehouse", "definition", "emulation", "encoding", "encryption",
84
+ "extranet", "firmware", "flexibility", "focus group", "forecast",
85
+ "frame", "framework", "function", "functionalities", "Graphic Interface",
86
+ "groupware", "Graphical User Interface", "hardware",
87
+ "help-desk", "hierarchy", "hub", "implementation", "info-mediaries",
88
+ "infrastructure", "initiative", "installation", "instruction set",
89
+ "interface", "internet solution", "intranet", "knowledge user",
90
+ "knowledge base", "local area network", "leverage", "matrices",
91
+ "matrix", "methodology", "middleware", "migration", "model",
92
+ "moderator", "monitoring", "moratorium", "neural-net", "open architecture",
93
+ "open system", "orchestration", "paradigm", "parallelism", "policy",
94
+ "portal", "pricing structure", "process improvement", "product",
95
+ "productivity", "project", "projection", "protocol", "secured line",
96
+ "service-desk", "software", "solution", "standardization",
97
+ "strategy", "structure", "success", "superstructure", "support",
98
+ "synergy", "system engine", "task-force", "throughput",
99
+ "time-frame", "toolset", "utilisation", "website",
100
+ "workforce"]
101
+
102
+ BS_PRE = k ["implement", "utilize", "integrate", "streamline", "optimize",
103
+ "evolve", "transform", "embrace", "enable", "orchestrate", "leverage",
104
+ "reinvent", "aggregate", "architect", "enhance", "incentivize",
105
+ "morph", "empower", "envisioneer", "monetize", "harness", "facilitate",
106
+ "seize", "disintermediate", "synergize", "strategize", "deploy",
107
+ "brand", "grow", "target", "syndicate", "synthesize", "deliver",
108
+ "mesh", "incubate", "engage", "maximize", "benchmark", "expedite",
109
+ "reintermediate", "whiteboard", "visualize", "repurpose", "innovate",
110
+ "scale", "unleash", "drive", "extend", "engineer", "revolutionize",
111
+ "generate", "exploit", "transition", "e-enable", "iterate",
112
+ "cultivate", "matrix", "productize", "redefine", "recontextualize"]
113
+
114
+ BS_MID = k ["clicks-and-mortar", "value-added", "vertical", "proactive",
115
+ "robust", "revolutionary", "scalable", "leading-edge", "innovative",
116
+ "intuitive", "strategic", "e-business", "mission-critical", "sticky",
117
+ "one-to-one", "24/7", "end-to-end", "global", "B2B", "B2C", "granular",
118
+ "frictionless", "virtual", "viral", "dynamic", "24/365",
119
+ "best-of-breed", "killer", "magnetic", "bleeding-edge", "web-enabled",
120
+ "interactive", "dot-com", "sexy", "back-end", "real-time", "efficient",
121
+ "front-end", "distributed", "seamless", "extensible", "turn-key",
122
+ "world-class", "open-source", "cross-platform", "cross-media",
123
+ "synergistic", "bricks-and-clicks", "out-of-the-box", "enterprise",
124
+ "integrated", "impactful", "wireless", "transparent",
125
+ "next-generation", "cutting-edge", "user-centric", "visionary",
126
+ "customized", "ubiquitous", "plug-and-play", "collaborative",
127
+ "compelling", "holistic", "rich"]
128
+
129
+ BS_POS = k ["synergies", "web-readiness", "paradigms", "markets",
130
+ "partnerships", "infrastructures", "platforms", "initiatives",
131
+ "channels", "eyeballs", "communities", "ROI", "solutions", "e-tailers",
132
+ "e-services", "action-items", "portals", "niches", "technologies",
133
+ "content", "vortals", "supply-chains", "convergence", "relationships",
134
+ "architectures", "interfaces", "e-markets", "e-commerce", "systems",
135
+ "bandwidth", "infomediaries", "models", "mindshare", "deliverables",
136
+ "users", "schemas", "networks", "applications", "metrics",
137
+ "e-business", "functionalities", "experiences", "web services",
138
+ "methodologies"]
139
+ end
140
+ end