| @@ -0,0 +1,76 @@ |
| | 1 | module Docs |
| | 2 | class Terraform |
| | 3 | class EntriesFilter < Docs::EntriesFilter |
| | 4 | |
| | 5 | # Some providers have non-trivial mappings between the directory they live in and their name |
| | 6 | # Anything *not* in this list will be capitalized instead. |
| | 7 | PROVIDER_NAME_MAP = { |
| | 8 | 'aws' => 'AWS', |
| | 9 | 'azure' => 'Azure (Legacy)', |
| | 10 | 'azurerm' => 'Azure', |
| | 11 | 'centurylinkcloud' => 'CenturyLinkCloud', |
| | 12 | 'cloudscale' => 'CloudScale.ch', |
| | 13 | 'cloudstack' => 'CloudStack', |
| | 14 | 'dme' => 'DNSMadeEasy', |
| | 15 | 'dns' => 'DNS', |
| | 16 | 'dnsimple' => 'DNSimple', |
| | 17 | 'do' => 'DigitalOcean', |
| | 18 | 'github' => 'GitHub', |
| | 19 | 'google' => 'Google Cloud', |
| | 20 | 'http' => 'HTTP', |
| | 21 | 'mysql' => 'MySQL', |
| | 22 | 'newrelic' => 'New Relic', |
| | 23 | 'oneandone' => '1&1', |
| | 24 | 'opentelekomcloud' => 'OpenTelekomCloud', |
| | 25 | 'opsgenie' => 'OpsGenie', |
| | 26 | 'opc' => 'Oracle Public Cloud', |
| | 27 | 'oraclepaas' => 'Oracle Cloud Platform', |
| | 28 | 'ovh' => 'OVH', |
| | 29 | 'pagerduty' => 'PagerDuty', |
| | 30 | 'panos' => 'Palo Alto Networks', |
| | 31 | 'postgresql' => 'PostgreSQL', |
| | 32 | 'powerdns' => 'PowerDNS', |
| | 33 | 'profitbricks' => 'ProfitBricks', |
| | 34 | 'rabbitmq' => 'RabbitMQ', |
| | 35 | 'softlayer' => 'SoftLayer', |
| | 36 | 'statuscake' => 'StatusCake', |
| | 37 | 'tls' => 'TLS', |
| | 38 | 'ultradns' => 'UltraDNS', |
| | 39 | 'vcd' => 'VMware vCloud Director', |
| | 40 | 'nsxt' => 'VMware NSX-T', |
| | 41 | 'vsphere' => 'VMware vSphere', |
| | 42 | } |
| | 43 | |
| | 44 | # Some providers have a lot (> 100) entries, which makes browsing them unwieldy. |
| | 45 | # Any present in the list below will have an extra set of types added, breaking the pages out into the different |
| | 46 | # products they offer. |
| | 47 | LARGE_PROVIDERS = { |
| | 48 | "aws" => true, |
| | 49 | "azurerm" => true, |
| | 50 | "google" => true, |
| | 51 | } |
| | 52 | |
| | 53 | |
| | 54 | def get_name |
| | 55 | name ||= at_css('#inner h1').content |
| | 56 | name.remove! "» " |
| | 57 | name.remove! "Data Source: " |
| | 58 | name |
| | 59 | end |
| | 60 | |
| | 61 | def get_type |
| | 62 | category, subcategory, subfolder, page = *slug.split('/') |
| | 63 | provider = page ? subcategory : category |
| | 64 | nice_provider = PROVIDER_NAME_MAP[provider] || provider.capitalize |
| | 65 | |
| | 66 | if LARGE_PROVIDERS[provider] |
| | 67 | category_node = at_css('ul > li > ul > li.active') |
| | 68 | parent_node = category_node.parent.previous_element if category_node |
| | 69 | nice_provider = nice_provider + ": #{parent_node.content}" if category_node |
| | 70 | end |
| | 71 | |
| | 72 | nice_provider |
| | 73 | end |
| | 74 | end |
| | 75 | end |
| | 76 | end |