ffaker 0.3.2

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.
@@ -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