#!/usr/bin/python
# Author: Theodore Zacharia
# V0.1: 30/06/2020 - Initial Release
#
# This script uses buzzwords to make a sort of sensible statement
# The parameter passed is the number parts in sentences, joined by conjunctions
# you can test this as follows:
#   python -c 'import buzzwords ; print buzzwords.buzzwords(2)'

import random


adverbs = [
'appropriately', 'assertively', 'authoritatively', 'collaboratively', 'compellingly', 'competently', 'completely',
'continually', 'conveniently', 'credibly', 'distinctively', 'dramatically', 'dynamically', 'efficiently',
'energistically', 'enthusiastically', 'globally', 'holisticly', 'interactively', 'intrinsicly', 'monotonectally',
'objectively', 'phosfluorescently', 'proactively', 'professionally', 'progressively', 'quickly', 'rapidiously',
'seamlessly', 'synergistically', 'uniquely'
]

verbs = [
'actualize', 'administrate', 'aggregate', 'architect', 'benchmark', 'brand', 'build', 'communicate', 'conceptualize',
'coordinate', 'create', 'cultivate', 'customize', 'deliver', 'deploy', 'develop', 'disintermediate', 'disseminate',
'drive', 'embrace', 'e-enable', 'empower', 'enable', 'engage', 'engineer', 'enhance', 'envisioneer', 'evisculate',
'evolve', 'expedite', 'exploit', 'extend', 'fabricate', 'facilitate', 'fashion', 'formulate', 'foster', 'generate',
'grow', 'harness', 'impact', 'implement', 'incentivize', 'incubate', 'initiate', 'innovate', 'integrate', 'iterate',
'leverage existing', 'leverage others', 'maintain', 'matrix', 'maximize', 'mesh', 'monetize', 'morph', 'myocardinate',
'negotiate', 'network', 'optimize', 'orchestrate', 'parallel task', 'plagiarize', 'pontificate', 'predominate',
'procrastinate', 'productivate', 'productize', 'promote', 'provide access to', 'pursue', 'recaptiualize',
'reconceptualize', 'redefine', 're-engineer', 'reintermediate', 'reinvent', 'repurpose', 'restore', 'revolutionize',
'scale', 'seize', 'simplify', 'strategize', 'streamline', 'supply', 'syndicate', 'synergize', 'synthesize', 'target',
'transform', 'transition', 'underwhelm', 'unleash', 'utilize', 'visualize', 'whiteboard'
]

adjectives = [
'24/7', '24/365', 'accurate', 'adaptive', 'alternative', 'an expanded array of', 'B2B', 'B2C', 'backend',
'backward-compatible', 'best-of-breed', 'bleeding-edge', 'bricks-and-clicks', 'business', 'clicks-and-mortar',
'client-based', 'client-centered', 'client-centric', 'client-focused', 'collaborative', 'compelling',  'competitive',
'cooperative', 'corporate', 'cost effective', 'covalent', 'cross functional', 'cross-media', 'cross-platform',
'cross-unit', 'customer directed', 'customized', 'cutting-edge', 'distinctive', 'distributed', 'diverse', 'dynamic',
'e-business', 'economically sound', 'effective', 'efficient', 'emerging', 'empowered', 'enabled', 'end-to-end',
'enterprise', 'enterprise-wide', 'equity invested', 'error-free', 'ethical', 'excellent', 'exceptional', 'extensible',
'extensive', 'flexible', 'focused', 'frictionless', 'front-end', 'fully researched', 'fully tested', 'functional',
'functionalized', 'future-proof', 'global', 'go forward', 'goal-oriented', 'granular', 'high standards in',
'high-payoff', 'high-quality', 'highly efficient', 'holistic', 'impactful', 'inexpensive', 'innovative',
'installed base', 'integrated', 'interactive', 'interdependent', 'intermandated', 'interoperable', 'intuitive',
'just in time', 'leading-edge', 'leveraged', 'long-term high-impact', 'low-risk high-yield', 'magnetic',
'maintainable', 'market positioning', 'market-driven', 'mission-critical', 'multidisciplinary', 'multifunctional',
'multimedia based', 'next-generation', 'one-to-one', 'open-source', 'optimal', 'orthogonal', 'out-of-the-box',
'pandemic', 'parallel', 'performance based', 'plug-and-play', 'premier', 'premium', 'principle-centered', 'proactive',
'process-centric', 'professional', 'progressive', 'prospective', 'quality', 'real-time', 'reliable', 'resource sucking',
'resource maximizing', 'resource-leveling', 'revolutionary', 'robust', 'scalable', 'seamless', 'stand-alone',
'standardized', 'standards compliant', 'state of the art', 'sticky', 'strategic', 'superior', 'sustainable',
'synergistic', 'tactical', 'team building', 'team driven', 'technically sound', 'timely', 'top-line', 'transparent',
'turnkey', 'ubiquitous', 'unique', 'user-centric', 'user friendly', 'value-added', 'vertical', 'viral', 'virtual',
'visionary', 'web-enabled', 'wireless', 'world-class', 'worldwide'
]

nouns = [
'action items', 'alignments', 'applications', 'architectures', 'bandwidth', 'benefits',
'best practices', 'catalysts for change', 'channels', 'collaboration and idea-sharing', 'communities', 'content',
'convergence', 'core competencies', 'customer service', 'data', 'deliverables', 'e-business', 'e-commerce', 'e-markets',
'e-tailers', 'e-services', 'experiences', 'expertise', 'functionalities', 'growth strategies', 'human capital',
'ideas', 'imperatives', 'infomediaries', 'information', 'infrastructures', 'initiatives', 'innovation',
'intellectual capital', 'interfaces', 'internal or organic sources', 'leadership', 'leadership skills',
'manufactured products', 'markets', 'materials', 'meta-services', 'methodologies', 'methods of empowerment', 'metrics',
'mindshare', 'models', 'networks', 'niches', 'niche markets', 'opportunities', 'outside-the-box thinking', 'outsourcing',
'paradigms', 'partnerships', 'platforms', 'portals', 'potentialities', 'process improvements', 'processes', 'products',
'quality vectors', 'relationships', 'resources', 'results', 'ROI', 'scenarios', 'schemas', 'services', 'solutions',
'sources', 'strategic theme areas', 'supply chains', 'synergy', 'systems', 'technologies', 'technology',
'testing procedures', 'total linkage', 'users', 'value', 'vortals', 'web-readiness', 'web services'
]

# replaced '"outside the box" thinking' and '"organic"'

conjunctions = [
'to', 'as', 'then', 'for', 'because', 'and', 'or', 'so', 'thus', 'when', 'while', 'after', 'before'
]

def buzzwords(aStatmentLen, aStatmentBlocks):

     # we can produce a reproducabile sequence by having a know start state
     random.seed()

     statement = ""

     for ablock in range(aStatmentBlocks):
          if ablock > 0:
               statement = statement + '\n\n'

          for alen in range(aStatmentLen):
               newstatement = random.choice(adverbs)
               if alen == 0:
                    statement = statement + newstatement.capitalize()
               else:
                    statement = statement + newstatement

               statement = statement + " " + random.choice(verbs)
               statement = statement + " " + random.choice(adjectives)
               statement = statement + " " + random.choice(nouns)

               if alen < aStatmentLen-1:
                    statement = statement + " " + random.choice(conjunctions) + " "


          statement = statement + "."

     return statement