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