diff --git a/.claude/harvest/osm-website-rs/crates/osm-domain/src/generated/actions.rs b/.claude/harvest/osm-website-rs/crates/osm-domain/src/generated/controllers.rs similarity index 65% rename from .claude/harvest/osm-website-rs/crates/osm-domain/src/generated/actions.rs rename to .claude/harvest/osm-website-rs/crates/osm-domain/src/generated/controllers.rs index 0d06983..25b700d 100644 --- a/.claude/harvest/osm-website-rs/crates/osm-domain/src/generated/actions.rs +++ b/.claude/harvest/osm-website-rs/crates/osm-domain/src/generated/controllers.rs @@ -1,6 +1,8 @@ -//! @generated DO-arm — OSM controller actions as `osm::::(input)`. -//! part_of = container module, is_a = action fn (standalone, not methods on the -//! data struct, per OGAR's ActionDef rule). Call: `osm::map::render(Input::default())`. +//! @generated DO arm — a faithful `controllers` mirror. Each module is a +//! source controller by its own verbatim (snake) name; each fn is an `is_a` +//! action (standalone, not methods on the record). osm-domain re-exports this +//! module (`pub use controllers::*`), so `controllers::nodes::show(input)` and +//! the re-exported `nodes::show(input)` both resolve. No singularisation. #![allow(clippy::all, dead_code, unused_variables)] @@ -13,37 +15,37 @@ pub struct Input; #[derive(Debug, Default)] pub struct Output; -pub mod account { +pub mod accounts { use super::{Input, Output}; - /// `account:delete` — DO arm. Source: `AccountsController#destroy`. + /// `accounts:delete` — DO arm. Source: `AccountsController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port AccountsController#destroy") } - /// `account:show` — DO arm. Source: `AccountsController#show`. + /// `accounts:show` — DO arm. Source: `AccountsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port AccountsController#show") } - /// `account:update` — DO arm. Source: `AccountsController#update`. + /// `accounts:update` — DO arm. Source: `AccountsController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port AccountsController#update") } } -pub mod active_list { +pub mod active_lists { use super::{Input, Output}; - /// `active_list:show` — DO arm. Source: `Api::UserBlocks::ActiveListsController#show`. + /// `active_lists:show` — DO arm. Source: `Api::UserBlocks::ActiveListsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::UserBlocks::ActiveListsController#show") } } -pub mod advanced_preference { +pub mod advanced_preferences { use super::{Input, Output}; - /// `advanced_preference:update_preferences` — DO arm. Source: `Preferences::AdvancedPreferencesController#update_preferences`. + /// `advanced_preferences:update_preferences` — DO arm. Source: `Preferences::AdvancedPreferencesController#update_preferences`. pub fn update_preferences(input: Input) -> Output { let _ = input; todo!("port Preferences::AdvancedPreferencesController#update_preferences") @@ -233,191 +235,191 @@ pub mod application { } } -pub mod basic_preference { +pub mod basic_preferences { use super::{Input, Output}; - /// `basic_preference:update_preferences` — DO arm. Source: `Preferences::BasicPreferencesController#update_preferences`. + /// `basic_preferences:update_preferences` — DO arm. Source: `Preferences::BasicPreferencesController#update_preferences`. pub fn update_preferences(input: Input) -> Output { let _ = input; todo!("port Preferences::BasicPreferencesController#update_preferences") } } -pub mod capabilitie { +pub mod capabilities { use super::{Input, Output}; - /// `capabilitie:show` — DO arm. Source: `Api::CapabilitiesController#show`. + /// `capabilities:show` — DO arm. Source: `Api::CapabilitiesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::CapabilitiesController#show") } } -pub mod changeset { +pub mod changeset_comments { use super::{Input, Output}; - /// `changeset:conditions_bbox` — DO arm. Source: `Api::ChangesetsController#conditions_bbox`. + /// `changeset_comments:create` — DO arm. Source: `Api::ChangesetCommentsController#create`. + pub fn create(input: Input) -> Output { + let _ = input; + todo!("port Api::ChangesetCommentsController#create") + } + /// `changeset_comments:list` — DO arm. Sources (canonical tile): `Api::ChangesetCommentsController#index`, `Users::ChangesetCommentsController#index`. + pub fn list(input: Input) -> Output { + let _ = input; + todo!("port Api::ChangesetCommentsController#index") + } + /// `changeset_comments:rate_limit_exceeded?` — DO arm. Source: `Api::ChangesetCommentsController#rate_limit_exceeded?`. + pub fn rate_limit_exceeded(input: Input) -> Output { + let _ = input; + todo!("port Api::ChangesetCommentsController#rate_limit_exceeded?") + } +} + +pub mod changeset_subscriptions { + use super::{Input, Output}; + /// `changeset_subscriptions:create` — DO arm. Sources (canonical tile): `Api::ChangesetSubscriptionsController#create`, `ChangesetSubscriptionsController#create`. + pub fn create(input: Input) -> Output { + let _ = input; + todo!("port Api::ChangesetSubscriptionsController#create") + } + /// `changeset_subscriptions:delete` — DO arm. Sources (canonical tile): `Api::ChangesetSubscriptionsController#destroy`, `ChangesetSubscriptionsController#destroy`. + pub fn delete(input: Input) -> Output { + let _ = input; + todo!("port Api::ChangesetSubscriptionsController#destroy") + } + /// `changeset_subscriptions:show` — DO arm. Source: `ChangesetSubscriptionsController#show`. + pub fn show(input: Input) -> Output { + let _ = input; + todo!("port ChangesetSubscriptionsController#show") + } +} + +pub mod changesets { + use super::{Input, Output}; + /// `changesets:conditions_bbox` — DO arm. Sources (canonical tile): `Api::ChangesetsController#conditions_bbox`, `ChangesetsController#conditions_bbox`. pub fn conditions_bbox(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#conditions_bbox") } - /// `changeset:conditions_closed` — DO arm. Source: `Api::ChangesetsController#conditions_closed`. + /// `changesets:conditions_closed` — DO arm. Source: `Api::ChangesetsController#conditions_closed`. pub fn conditions_closed(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#conditions_closed") } - /// `changeset:conditions_ids` — DO arm. Source: `Api::ChangesetsController#conditions_ids`. + /// `changesets:conditions_ids` — DO arm. Source: `Api::ChangesetsController#conditions_ids`. pub fn conditions_ids(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#conditions_ids") } - /// `changeset:conditions_nonempty` — DO arm. Source: `ChangesetsController#conditions_nonempty`. + /// `changesets:conditions_nonempty` — DO arm. Source: `ChangesetsController#conditions_nonempty`. pub fn conditions_nonempty(input: Input) -> Output { let _ = input; todo!("port ChangesetsController#conditions_nonempty") } - /// `changeset:conditions_open` — DO arm. Source: `Api::ChangesetsController#conditions_open`. + /// `changesets:conditions_open` — DO arm. Source: `Api::ChangesetsController#conditions_open`. pub fn conditions_open(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#conditions_open") } - /// `changeset:conditions_time` — DO arm. Source: `Api::ChangesetsController#conditions_time`. + /// `changesets:conditions_time` — DO arm. Source: `Api::ChangesetsController#conditions_time`. pub fn conditions_time(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#conditions_time") } - /// `changeset:conditions_user` — DO arm. Source: `Api::ChangesetsController#conditions_user`. + /// `changesets:conditions_user` — DO arm. Source: `Api::ChangesetsController#conditions_user`. pub fn conditions_user(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#conditions_user") } - /// `changeset:create` — DO arm. Source: `Api::ChangesetsController#create`. + /// `changesets:create` — DO arm. Source: `Api::ChangesetsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#create") } - /// `changeset:feed` — DO arm. Source: `ChangesetsController#feed`. + /// `changesets:feed` — DO arm. Source: `ChangesetsController#feed`. pub fn feed(input: Input) -> Output { let _ = input; todo!("port ChangesetsController#feed") } - /// `changeset:list` — DO arm. Source: `Api::ChangesetsController#index`. + /// `changesets:list` — DO arm. Sources (canonical tile): `Api::ChangesetsController#index`, `ChangesetsController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#index") } - /// `changeset:load_nodes` — DO arm. Source: `ChangesetsController#load_nodes`. + /// `changesets:load_nodes` — DO arm. Source: `ChangesetsController#load_nodes`. pub fn load_nodes(input: Input) -> Output { let _ = input; todo!("port ChangesetsController#load_nodes") } - /// `changeset:load_relations` — DO arm. Source: `ChangesetsController#load_relations`. + /// `changesets:load_relations` — DO arm. Source: `ChangesetsController#load_relations`. pub fn load_relations(input: Input) -> Output { let _ = input; todo!("port ChangesetsController#load_relations") } - /// `changeset:load_ways` — DO arm. Source: `ChangesetsController#load_ways`. + /// `changesets:load_ways` — DO arm. Source: `ChangesetsController#load_ways`. pub fn load_ways(input: Input) -> Output { let _ = input; todo!("port ChangesetsController#load_ways") } - /// `changeset:show` — DO arm. Source: `Api::ChangesetsController#show`. + /// `changesets:show` — DO arm. Sources (canonical tile): `Api::ChangesetsController#show`, `ChangesetsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#show") } - /// `changeset:update` — DO arm. Source: `Api::ChangesetsController#update`. + /// `changesets:update` — DO arm. Source: `Api::ChangesetsController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetsController#update") } - /// `changeset:wrap_lon` — DO arm. Source: `ChangesetsController#wrap_lon`. + /// `changesets:wrap_lon` — DO arm. Source: `ChangesetsController#wrap_lon`. pub fn wrap_lon(input: Input) -> Output { let _ = input; todo!("port ChangesetsController#wrap_lon") } } -pub mod changeset_comment { - use super::{Input, Output}; - /// `changeset_comment:create` — DO arm. Source: `Api::ChangesetCommentsController#create`. - pub fn create(input: Input) -> Output { - let _ = input; - todo!("port Api::ChangesetCommentsController#create") - } - /// `changeset_comment:list` — DO arm. Source: `Api::ChangesetCommentsController#index`. - pub fn list(input: Input) -> Output { - let _ = input; - todo!("port Api::ChangesetCommentsController#index") - } - /// `changeset_comment:rate_limit_exceeded?` — DO arm. Source: `Api::ChangesetCommentsController#rate_limit_exceeded?`. - pub fn rate_limit_exceeded(input: Input) -> Output { - let _ = input; - todo!("port Api::ChangesetCommentsController#rate_limit_exceeded?") - } -} - -pub mod changeset_subscription { +pub mod closes { use super::{Input, Output}; - /// `changeset_subscription:create` — DO arm. Source: `Api::ChangesetSubscriptionsController#create`. - pub fn create(input: Input) -> Output { - let _ = input; - todo!("port Api::ChangesetSubscriptionsController#create") - } - /// `changeset_subscription:delete` — DO arm. Source: `Api::ChangesetSubscriptionsController#destroy`. - pub fn delete(input: Input) -> Output { - let _ = input; - todo!("port Api::ChangesetSubscriptionsController#destroy") - } - /// `changeset_subscription:show` — DO arm. Source: `ChangesetSubscriptionsController#show`. - pub fn show(input: Input) -> Output { - let _ = input; - todo!("port ChangesetSubscriptionsController#show") - } -} - -pub mod close { - use super::{Input, Output}; - /// `close:update` — DO arm. Source: `Api::Changesets::ClosesController#update`. + /// `closes:update` — DO arm. Source: `Api::Changesets::ClosesController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Api::Changesets::ClosesController#update") } } -pub mod companie { +pub mod companies { use super::{Input, Output}; - /// `companie:update_profile` — DO arm. Source: `Profiles::CompaniesController#update_profile`. + /// `companies:update_profile` — DO arm. Source: `Profiles::CompaniesController#update_profile`. pub fn update_profile(input: Input) -> Output { let _ = input; todo!("port Profiles::CompaniesController#update_profile") } } -pub mod confirmation { +pub mod confirmations { use super::{Input, Output}; - /// `confirmation:confirm` — DO arm. Source: `ConfirmationsController#confirm`. + /// `confirmations:confirm` — DO arm. Source: `ConfirmationsController#confirm`. pub fn confirm(input: Input) -> Output { let _ = input; todo!("port ConfirmationsController#confirm") } - /// `confirmation:confirm_email` — DO arm. Source: `ConfirmationsController#confirm_email`. + /// `confirmations:confirm_email` — DO arm. Source: `ConfirmationsController#confirm_email`. pub fn confirm_email(input: Input) -> Output { let _ = input; todo!("port ConfirmationsController#confirm_email") } - /// `confirmation:confirm_resend` — DO arm. Source: `ConfirmationsController#confirm_resend`. + /// `confirmations:confirm_resend` — DO arm. Source: `ConfirmationsController#confirm_resend`. pub fn confirm_resend(input: Input) -> Output { let _ = input; todo!("port ConfirmationsController#confirm_resend") } - /// `confirmation:gravatar_status_message` — DO arm. Source: `ConfirmationsController#gravatar_status_message`. + /// `confirmations:gravatar_status_message` — DO arm. Source: `ConfirmationsController#gravatar_status_message`. pub fn gravatar_status_message(input: Input) -> Output { let _ = input; todo!("port ConfirmationsController#gravatar_status_message") } } -pub mod dashboard { +pub mod dashboards { use super::{Input, Output}; - /// `dashboard:show` — DO arm. Source: `DashboardsController#show`. + /// `dashboards:show` — DO arm. Source: `DashboardsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port DashboardsController#show") @@ -436,170 +438,170 @@ pub mod data { let _ = input; todo!("port Traces::DataController#offline_redirect") } - /// `data:show` — DO arm. Source: `Api::Traces::DataController#show`. + /// `data:show` — DO arm. Sources (canonical tile): `Api::Traces::DataController#show`, `Traces::DataController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::Traces::DataController#show") } } -pub mod deletion { +pub mod deletions { use super::{Input, Output}; - /// `deletion:show` — DO arm. Source: `Accounts::DeletionsController#show`. + /// `deletions:show` — DO arm. Source: `Accounts::DeletionsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Accounts::DeletionsController#show") } } -pub mod description { +pub mod descriptions { use super::{Input, Output}; - /// `description:update_profile` — DO arm. Source: `Profiles::DescriptionsController#update_profile`. + /// `descriptions:update_profile` — DO arm. Source: `Profiles::DescriptionsController#update_profile`. pub fn update_profile(input: Input) -> Output { let _ = input; todo!("port Profiles::DescriptionsController#update_profile") } } -pub mod diary_comment { +pub mod diary_comments { use super::{Input, Output}; - /// `diary_comment:comment_params` — DO arm. Source: `DiaryCommentsController#comment_params`. + /// `diary_comments:comment_params` — DO arm. Source: `DiaryCommentsController#comment_params`. pub fn comment_params(input: Input) -> Output { let _ = input; todo!("port DiaryCommentsController#comment_params") } - /// `diary_comment:create` — DO arm. Source: `DiaryCommentsController#create`. + /// `diary_comments:create` — DO arm. Source: `DiaryCommentsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port DiaryCommentsController#create") } - /// `diary_comment:hide` — DO arm. Source: `DiaryCommentsController#hide`. + /// `diary_comments:hide` — DO arm. Source: `DiaryCommentsController#hide`. pub fn hide(input: Input) -> Output { let _ = input; todo!("port DiaryCommentsController#hide") } - /// `diary_comment:list` — DO arm. Source: `Users::DiaryCommentsController#index`. + /// `diary_comments:list` — DO arm. Source: `Users::DiaryCommentsController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Users::DiaryCommentsController#index") } - /// `diary_comment:unhide` — DO arm. Source: `DiaryCommentsController#unhide`. + /// `diary_comments:unhide` — DO arm. Source: `DiaryCommentsController#unhide`. pub fn unhide(input: Input) -> Output { let _ = input; todo!("port DiaryCommentsController#unhide") } } -pub mod diary_entrie { +pub mod diary_entries { use super::{Input, Output}; - /// `diary_entrie:create` — DO arm. Source: `DiaryEntriesController#create`. + /// `diary_entries:create` — DO arm. Source: `DiaryEntriesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#create") } - /// `diary_entrie:edit` — DO arm. Source: `DiaryEntriesController#edit`. + /// `diary_entries:edit` — DO arm. Source: `DiaryEntriesController#edit`. pub fn edit(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#edit") } - /// `diary_entrie:entry_params` — DO arm. Source: `DiaryEntriesController#entry_params`. + /// `diary_entries:entry_params` — DO arm. Source: `DiaryEntriesController#entry_params`. pub fn entry_params(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#entry_params") } - /// `diary_entrie:hide` — DO arm. Source: `DiaryEntriesController#hide`. + /// `diary_entries:hide` — DO arm. Source: `DiaryEntriesController#hide`. pub fn hide(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#hide") } - /// `diary_entrie:list` — DO arm. Source: `DiaryEntriesController#index`. + /// `diary_entries:list` — DO arm. Source: `DiaryEntriesController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#index") } - /// `diary_entrie:new_form` — DO arm. Source: `DiaryEntriesController#new`. + /// `diary_entries:new_form` — DO arm. Source: `DiaryEntriesController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#new") } - /// `diary_entrie:rss` — DO arm. Source: `DiaryEntriesController#rss`. + /// `diary_entries:rss` — DO arm. Source: `DiaryEntriesController#rss`. pub fn rss(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#rss") } - /// `diary_entrie:set_map_location` — DO arm. Source: `DiaryEntriesController#set_map_location`. + /// `diary_entries:set_map_location` — DO arm. Source: `DiaryEntriesController#set_map_location`. pub fn set_map_location(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#set_map_location") } - /// `diary_entrie:show` — DO arm. Source: `DiaryEntriesController#show`. + /// `diary_entries:show` — DO arm. Source: `DiaryEntriesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#show") } - /// `diary_entrie:subscribe` — DO arm. Source: `DiaryEntriesController#subscribe`. + /// `diary_entries:subscribe` — DO arm. Source: `DiaryEntriesController#subscribe`. pub fn subscribe(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#subscribe") } - /// `diary_entrie:unhide` — DO arm. Source: `DiaryEntriesController#unhide`. + /// `diary_entries:unhide` — DO arm. Source: `DiaryEntriesController#unhide`. pub fn unhide(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#unhide") } - /// `diary_entrie:unsubscribe` — DO arm. Source: `DiaryEntriesController#unsubscribe`. + /// `diary_entries:unsubscribe` — DO arm. Source: `DiaryEntriesController#unsubscribe`. pub fn unsubscribe(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#unsubscribe") } - /// `diary_entrie:update` — DO arm. Source: `DiaryEntriesController#update`. + /// `diary_entries:update` — DO arm. Source: `DiaryEntriesController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port DiaryEntriesController#update") } } -pub mod direction { +pub mod directions { use super::{Input, Output}; - /// `direction:show` — DO arm. Source: `DirectionsController#show`. + /// `directions:show` — DO arm. Source: `DirectionsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port DirectionsController#show") } } -pub mod download { +pub mod downloads { use super::{Input, Output}; - /// `download:show` — DO arm. Source: `Api::Changesets::DownloadsController#show`. + /// `downloads:show` — DO arm. Source: `Api::Changesets::DownloadsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::Changesets::DownloadsController#show") } - /// `download:show_redactions?` — DO arm. Source: `Api::Changesets::DownloadsController#show_redactions?`. + /// `downloads:show_redactions?` — DO arm. Source: `Api::Changesets::DownloadsController#show_redactions?`. pub fn show_redactions(input: Input) -> Output { let _ = input; todo!("port Api::Changesets::DownloadsController#show_redactions?") } } -pub mod error { +pub mod errors { use super::{Input, Output}; - /// `error:bad_request` — DO arm. Source: `ErrorsController#bad_request`. + /// `errors:bad_request` — DO arm. Source: `ErrorsController#bad_request`. pub fn bad_request(input: Input) -> Output { let _ = input; todo!("port ErrorsController#bad_request") } - /// `error:forbidden` — DO arm. Source: `ErrorsController#forbidden`. + /// `errors:forbidden` — DO arm. Source: `ErrorsController#forbidden`. pub fn forbidden(input: Input) -> Output { let _ = input; todo!("port ErrorsController#forbidden") } - /// `error:internal_server_error` — DO arm. Source: `ErrorsController#internal_server_error`. + /// `errors:internal_server_error` — DO arm. Source: `ErrorsController#internal_server_error`. pub fn internal_server_error(input: Input) -> Output { let _ = input; todo!("port ErrorsController#internal_server_error") } - /// `error:not_found` — DO arm. Source: `ErrorsController#not_found`. + /// `errors:not_found` — DO arm. Source: `ErrorsController#not_found`. pub fn not_found(input: Input) -> Output { let _ = input; todo!("port ErrorsController#not_found") @@ -620,906 +622,906 @@ pub mod export { } } -pub mod feature_querie { +pub mod feature_queries { use super::{Input, Output}; - /// `feature_querie:show` — DO arm. Source: `FeatureQueriesController#show`. + /// `feature_queries:show` — DO arm. Source: `FeatureQueriesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port FeatureQueriesController#show") } } -pub mod feed { +pub mod feeds { use super::{Input, Output}; - /// `feed:show` — DO arm. Source: `ChangesetComments::FeedsController#show`. + /// `feeds:show` — DO arm. Sources (canonical tile): `ChangesetComments::FeedsController#show`, `Traces::FeedsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port ChangesetComments::FeedsController#show") } } -pub mod follow { +pub mod follows { use super::{Input, Output}; - /// `follow:create` — DO arm. Source: `FollowsController#create`. + /// `follows:create` — DO arm. Source: `FollowsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port FollowsController#create") } - /// `follow:delete` — DO arm. Source: `FollowsController#destroy`. + /// `follows:delete` — DO arm. Source: `FollowsController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port FollowsController#destroy") } - /// `follow:show` — DO arm. Source: `FollowsController#show`. + /// `follows:show` — DO arm. Source: `FollowsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port FollowsController#show") } } -pub mod heatmap { +pub mod heatmaps { use super::{Input, Output}; - /// `heatmap:show` — DO arm. Source: `Users::HeatmapsController#show`. + /// `heatmaps:show` — DO arm. Source: `Users::HeatmapsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Users::HeatmapsController#show") } - /// `heatmap:update_profile` — DO arm. Source: `Profiles::HeatmapsController#update_profile`. + /// `heatmaps:update_profile` — DO arm. Source: `Profiles::HeatmapsController#update_profile`. pub fn update_profile(input: Input) -> Output { let _ = input; todo!("port Profiles::HeatmapsController#update_profile") } } -pub mod home { +pub mod homes { use super::{Input, Output}; - /// `home:show` — DO arm. Source: `Accounts::HomesController#show`. + /// `homes:show` — DO arm. Source: `Accounts::HomesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Accounts::HomesController#show") } } -pub mod icon { +pub mod icons { use super::{Input, Output}; - /// `icon:show` — DO arm. Source: `Traces::IconsController#show`. + /// `icons:show` — DO arm. Source: `Traces::IconsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Traces::IconsController#show") } } -pub mod image { +pub mod images { use super::{Input, Output}; - /// `image:update_profile` — DO arm. Source: `Profiles::ImagesController#update_profile`. + /// `images:update_profile` — DO arm. Source: `Profiles::ImagesController#update_profile`. pub fn update_profile(input: Input) -> Output { let _ = input; todo!("port Profiles::ImagesController#update_profile") } } -pub mod inboxe { +pub mod inboxes { use super::{Input, Output}; - /// `inboxe:show` — DO arm. Source: `Api::Messages::InboxesController#show`. + /// `inboxes:show` — DO arm. Sources (canonical tile): `Api::Messages::InboxesController#show`, `Messages::InboxesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::Messages::InboxesController#show") } } -pub mod issue { +pub mod issue_comments { use super::{Input, Output}; - /// `issue:find_issue` — DO arm. Source: `IssuesController#find_issue`. + /// `issue_comments:create` — DO arm. Source: `IssueCommentsController#create`. + pub fn create(input: Input) -> Output { + let _ = input; + todo!("port IssueCommentsController#create") + } + /// `issue_comments:issue_comment_params` — DO arm. Source: `IssueCommentsController#issue_comment_params`. + pub fn issue_comment_params(input: Input) -> Output { + let _ = input; + todo!("port IssueCommentsController#issue_comment_params") + } + /// `issue_comments:reassign_issue` — DO arm. Source: `IssueCommentsController#reassign_issue`. + pub fn reassign_issue(input: Input) -> Output { + let _ = input; + todo!("port IssueCommentsController#reassign_issue") + } +} + +pub mod issued_blocks { + use super::{Input, Output}; + /// `issued_blocks:show` — DO arm. Source: `Users::IssuedBlocksController#show`. + pub fn show(input: Input) -> Output { + let _ = input; + todo!("port Users::IssuedBlocksController#show") + } +} + +pub mod issues { + use super::{Input, Output}; + /// `issues:find_issue` — DO arm. Source: `IssuesController#find_issue`. pub fn find_issue(input: Input) -> Output { let _ = input; todo!("port IssuesController#find_issue") } - /// `issue:ignore` — DO arm. Source: `IssuesController#ignore`. + /// `issues:ignore` — DO arm. Source: `IssuesController#ignore`. pub fn ignore(input: Input) -> Output { let _ = input; todo!("port IssuesController#ignore") } - /// `issue:list` — DO arm. Source: `IssuesController#index`. + /// `issues:list` — DO arm. Source: `IssuesController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port IssuesController#index") } - /// `issue:reopen` — DO arm. Source: `IssuesController#reopen`. + /// `issues:reopen` — DO arm. Source: `IssuesController#reopen`. pub fn reopen(input: Input) -> Output { let _ = input; todo!("port IssuesController#reopen") } - /// `issue:resolve` — DO arm. Source: `IssuesController#resolve`. + /// `issues:resolve` — DO arm. Source: `IssuesController#resolve`. pub fn resolve(input: Input) -> Output { let _ = input; todo!("port IssuesController#resolve") } - /// `issue:show` — DO arm. Source: `IssuesController#show`. + /// `issues:show` — DO arm. Source: `IssuesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port IssuesController#show") } } -pub mod issue_comment { +pub mod languages_panes { use super::{Input, Output}; - /// `issue_comment:create` — DO arm. Source: `IssueCommentsController#create`. - pub fn create(input: Input) -> Output { - let _ = input; - todo!("port IssueCommentsController#create") - } - /// `issue_comment:issue_comment_params` — DO arm. Source: `IssueCommentsController#issue_comment_params`. - pub fn issue_comment_params(input: Input) -> Output { - let _ = input; - todo!("port IssueCommentsController#issue_comment_params") - } - /// `issue_comment:reassign_issue` — DO arm. Source: `IssueCommentsController#reassign_issue`. - pub fn reassign_issue(input: Input) -> Output { - let _ = input; - todo!("port IssueCommentsController#reassign_issue") - } -} - -pub mod issued_block { - use super::{Input, Output}; - /// `issued_block:show` — DO arm. Source: `Users::IssuedBlocksController#show`. - pub fn show(input: Input) -> Output { - let _ = input; - todo!("port Users::IssuedBlocksController#show") - } -} - -pub mod languages_pane { - use super::{Input, Output}; - /// `languages_pane:show` — DO arm. Source: `LanguagesPanesController#show`. + /// `languages_panes:show` — DO arm. Source: `LanguagesPanesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port LanguagesPanesController#show") } } -pub mod latlon_querie { +pub mod latlon_queries { use super::{Input, Output}; - /// `latlon_querie:create` — DO arm. Source: `Searches::LatlonQueriesController#create`. + /// `latlon_queries:create` — DO arm. Source: `Searches::LatlonQueriesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Searches::LatlonQueriesController#create") } } -pub mod layers_pane { +pub mod layers_panes { use super::{Input, Output}; - /// `layers_pane:show` — DO arm. Source: `LayersPanesController#show`. + /// `layers_panes:show` — DO arm. Source: `LayersPanesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port LayersPanesController#show") } } -pub mod legend_pane { +pub mod legend_panes { use super::{Input, Output}; - /// `legend_pane:show` — DO arm. Source: `LegendPanesController#show`. + /// `legend_panes:show` — DO arm. Source: `LegendPanesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port LegendPanesController#show") } } -pub mod link { +pub mod links { use super::{Input, Output}; - /// `link:update_profile` — DO arm. Source: `Profiles::LinksController#update_profile`. + /// `links:update_profile` — DO arm. Source: `Profiles::LinksController#update_profile`. pub fn update_profile(input: Input) -> Output { let _ = input; todo!("port Profiles::LinksController#update_profile") } } -pub mod list { +pub mod lists { use super::{Input, Output}; - /// `list:show` — DO arm. Source: `Users::ListsController#show`. + /// `lists:show` — DO arm. Source: `Users::ListsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Users::ListsController#show") } - /// `list:update` — DO arm. Source: `Users::ListsController#update`. + /// `lists:update` — DO arm. Source: `Users::ListsController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Users::ListsController#update") } } -pub mod location { +pub mod locations { use super::{Input, Output}; - /// `location:show` — DO arm. Source: `Profiles::LocationsController#show`. + /// `locations:show` — DO arm. Source: `Profiles::LocationsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Profiles::LocationsController#show") } - /// `location:update_profile` — DO arm. Source: `Profiles::LocationsController#update_profile`. + /// `locations:update_profile` — DO arm. Source: `Profiles::LocationsController#update_profile`. pub fn update_profile(input: Input) -> Output { let _ = input; todo!("port Profiles::LocationsController#update_profile") } } -pub mod mailboxe { +pub mod mailboxes { use super::{Input, Output}; - /// `mailboxe:show_messages` — DO arm. Source: `Api::Messages::MailboxesController#show_messages`. + /// `mailboxes:show_messages` — DO arm. Source: `Api::Messages::MailboxesController#show_messages`. pub fn show_messages(input: Input) -> Output { let _ = input; todo!("port Api::Messages::MailboxesController#show_messages") } } -pub mod map { +pub mod maps { use super::{Input, Output}; - /// `map:show` — DO arm. Source: `Api::MapsController#show`. + /// `maps:show` — DO arm. Source: `Api::MapsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::MapsController#show") } } -pub mod message { +pub mod messages { use super::{Input, Output}; - /// `message:create` — DO arm. Source: `Api::MessagesController#create`. + /// `messages:create` — DO arm. Sources (canonical tile): `Api::MessagesController#create`, `MessagesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::MessagesController#create") } - /// `message:delete` — DO arm. Source: `Api::MessagesController#destroy`. + /// `messages:delete` — DO arm. Sources (canonical tile): `Api::MessagesController#destroy`, `MessagesController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::MessagesController#destroy") } - /// `message:message_params` — DO arm. Source: `MessagesController#message_params`. + /// `messages:message_params` — DO arm. Source: `MessagesController#message_params`. pub fn message_params(input: Input) -> Output { let _ = input; todo!("port MessagesController#message_params") } - /// `message:new_form` — DO arm. Source: `MessagesController#new`. + /// `messages:new_form` — DO arm. Source: `MessagesController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port MessagesController#new") } - /// `message:show` — DO arm. Source: `Api::MessagesController#show`. + /// `messages:show` — DO arm. Sources (canonical tile): `Api::MessagesController#show`, `MessagesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::MessagesController#show") } - /// `message:update` — DO arm. Source: `Api::MessagesController#update`. + /// `messages:update` — DO arm. Source: `Api::MessagesController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Api::MessagesController#update") } } -pub mod mute { +pub mod muted_inboxes { use super::{Input, Output}; - /// `mute:delete` — DO arm. Source: `Messages::MutesController#destroy`. - pub fn delete(input: Input) -> Output { + /// `muted_inboxes:show` — DO arm. Source: `Messages::MutedInboxesController#show`. + pub fn show(input: Input) -> Output { let _ = input; - todo!("port Messages::MutesController#destroy") + todo!("port Messages::MutedInboxesController#show") } } -pub mod muted_inboxe { +pub mod mutes { use super::{Input, Output}; - /// `muted_inboxe:show` — DO arm. Source: `Messages::MutedInboxesController#show`. - pub fn show(input: Input) -> Output { + /// `mutes:delete` — DO arm. Source: `Messages::MutesController#destroy`. + pub fn delete(input: Input) -> Output { let _ = input; - todo!("port Messages::MutedInboxesController#show") + todo!("port Messages::MutesController#destroy") } } -pub mod node { +pub mod nodes { use super::{Input, Output}; - /// `node:create` — DO arm. Source: `Api::NodesController#create`. + /// `nodes:create` — DO arm. Source: `Api::NodesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::NodesController#create") } - /// `node:delete` — DO arm. Source: `Api::NodesController#destroy`. + /// `nodes:delete` — DO arm. Source: `Api::NodesController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::NodesController#destroy") } - /// `node:list` — DO arm. Source: `Api::NodesController#index`. + /// `nodes:list` — DO arm. Source: `Api::NodesController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Api::NodesController#index") } - /// `node:show` — DO arm. Source: `Api::NodesController#show`. + /// `nodes:show` — DO arm. Sources (canonical tile): `Api::NodesController#show`, `NodesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::NodesController#show") } - /// `node:update` — DO arm. Source: `Api::NodesController#update`. + /// `nodes:update` — DO arm. Source: `Api::NodesController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Api::NodesController#update") } } -pub mod nominatim_querie { +pub mod nominatim_queries { use super::{Input, Output}; - /// `nominatim_querie:create` — DO arm. Source: `Searches::NominatimQueriesController#create`. + /// `nominatim_queries:create` — DO arm. Source: `Searches::NominatimQueriesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Searches::NominatimQueriesController#create") } } -pub mod nominatim_reverse_querie { +pub mod nominatim_reverse_queries { use super::{Input, Output}; - /// `nominatim_reverse_querie:create` — DO arm. Source: `Searches::NominatimReverseQueriesController#create`. + /// `nominatim_reverse_queries:create` — DO arm. Source: `Searches::NominatimReverseQueriesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Searches::NominatimReverseQueriesController#create") } } -pub mod note { +pub mod note_subscriptions { + use super::{Input, Output}; + /// `note_subscriptions:create` — DO arm. Source: `Api::NoteSubscriptionsController#create`. + pub fn create(input: Input) -> Output { + let _ = input; + todo!("port Api::NoteSubscriptionsController#create") + } + /// `note_subscriptions:delete` — DO arm. Source: `Api::NoteSubscriptionsController#destroy`. + pub fn delete(input: Input) -> Output { + let _ = input; + todo!("port Api::NoteSubscriptionsController#destroy") + } +} + +pub mod notes { use super::{Input, Output}; - /// `note:add_comment` — DO arm. Source: `Api::NotesController#add_comment`. + /// `notes:add_comment` — DO arm. Source: `Api::NotesController#add_comment`. pub fn add_comment(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#add_comment") } - /// `note:author_info` — DO arm. Source: `Api::NotesController#author_info`. + /// `notes:author_info` — DO arm. Source: `Api::NotesController#author_info`. pub fn author_info(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#author_info") } - /// `note:bbox_condition` — DO arm. Source: `Api::NotesController#bbox_condition`. + /// `notes:bbox_condition` — DO arm. Source: `Api::NotesController#bbox_condition`. pub fn bbox_condition(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#bbox_condition") } - /// `note:close` — DO arm. Source: `Api::NotesController#close`. + /// `notes:close` — DO arm. Source: `Api::NotesController#close`. pub fn close(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#close") } - /// `note:closed_condition` — DO arm. Source: `Api::NotesController#closed_condition`. + /// `notes:closed_condition` — DO arm. Source: `Api::NotesController#closed_condition`. pub fn closed_condition(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#closed_condition") } - /// `note:comment` — DO arm. Source: `Api::NotesController#comment`. + /// `notes:comment` — DO arm. Source: `Api::NotesController#comment`. pub fn comment(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#comment") } - /// `note:create` — DO arm. Source: `Api::NotesController#create`. + /// `notes:create` — DO arm. Source: `Api::NotesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#create") } - /// `note:delete` — DO arm. Source: `Api::NotesController#destroy`. + /// `notes:delete` — DO arm. Source: `Api::NotesController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#destroy") } - /// `note:feed` — DO arm. Source: `Api::NotesController#feed`. + /// `notes:feed` — DO arm. Source: `Api::NotesController#feed`. pub fn feed(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#feed") } - /// `note:list` — DO arm. Source: `Api::NotesController#index`. + /// `notes:list` — DO arm. Sources (canonical tile): `Api::NotesController#index`, `NotesController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#index") } - /// `note:new_form` — DO arm. Source: `NotesController#new`. + /// `notes:new_form` — DO arm. Source: `NotesController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port NotesController#new") } - /// `note:reopen` — DO arm. Source: `Api::NotesController#reopen`. + /// `notes:reopen` — DO arm. Source: `Api::NotesController#reopen`. pub fn reopen(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#reopen") } - /// `note:search` — DO arm. Source: `Api::NotesController#search`. + /// `notes:search` — DO arm. Source: `Api::NotesController#search`. pub fn search(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#search") } - /// `note:show` — DO arm. Source: `Api::NotesController#show`. + /// `notes:show` — DO arm. Sources (canonical tile): `Api::NotesController#show`, `NotesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::NotesController#show") } } -pub mod note_subscription { - use super::{Input, Output}; - /// `note_subscription:create` — DO arm. Source: `Api::NoteSubscriptionsController#create`. - pub fn create(input: Input) -> Output { - let _ = input; - todo!("port Api::NoteSubscriptionsController#create") - } - /// `note_subscription:delete` — DO arm. Source: `Api::NoteSubscriptionsController#destroy`. - pub fn delete(input: Input) -> Output { - let _ = input; - todo!("port Api::NoteSubscriptionsController#destroy") - } -} - -pub mod notification_preference { +pub mod notification_preferences { use super::{Input, Output}; - /// `notification_preference:update_preferences` — DO arm. Source: `Preferences::NotificationPreferencesController#update_preferences`. + /// `notification_preferences:update_preferences` — DO arm. Source: `Preferences::NotificationPreferencesController#update_preferences`. pub fn update_preferences(input: Input) -> Output { let _ = input; todo!("port Preferences::NotificationPreferencesController#update_preferences") } } -pub mod oauth2_application { +pub mod oauth2_applications { use super::{Input, Output}; - /// `oauth2_application:application_params` — DO arm. Source: `Oauth2ApplicationsController#application_params`. + /// `oauth2_applications:application_params` — DO arm. Source: `Oauth2ApplicationsController#application_params`. pub fn application_params(input: Input) -> Output { let _ = input; todo!("port Oauth2ApplicationsController#application_params") } - /// `oauth2_application:list` — DO arm. Source: `Oauth2ApplicationsController#index`. + /// `oauth2_applications:list` — DO arm. Source: `Oauth2ApplicationsController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Oauth2ApplicationsController#index") } - /// `oauth2_application:set_application` — DO arm. Source: `Oauth2ApplicationsController#set_application`. + /// `oauth2_applications:set_application` — DO arm. Source: `Oauth2ApplicationsController#set_application`. pub fn set_application(input: Input) -> Output { let _ = input; todo!("port Oauth2ApplicationsController#set_application") } } -pub mod old_element { +pub mod old_elements { use super::{Input, Output}; - /// `old_element:list` — DO arm. Source: `Api::OldElementsController#index`. + /// `old_elements:list` — DO arm. Source: `Api::OldElementsController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Api::OldElementsController#index") } - /// `old_element:require_moderator_for_unredacted_history` — DO arm. Source: `OldElementsController#require_moderator_for_unredacted_history`. + /// `old_elements:require_moderator_for_unredacted_history` — DO arm. Source: `OldElementsController#require_moderator_for_unredacted_history`. pub fn require_moderator_for_unredacted_history(input: Input) -> Output { let _ = input; todo!("port OldElementsController#require_moderator_for_unredacted_history") } - /// `old_element:show` — DO arm. Source: `Api::OldElementsController#show`. + /// `old_elements:show` — DO arm. Source: `Api::OldElementsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::OldElementsController#show") } - /// `old_element:show_redactions?` — DO arm. Source: `Api::OldElementsController#show_redactions?`. + /// `old_elements:show_redactions?` — DO arm. Source: `Api::OldElementsController#show_redactions?`. pub fn show_redactions(input: Input) -> Output { let _ = input; todo!("port Api::OldElementsController#show_redactions?") } } -pub mod old_node { +pub mod old_nodes { use super::{Input, Output}; - /// `old_node:list` — DO arm. Source: `OldNodesController#index`. + /// `old_nodes:list` — DO arm. Source: `OldNodesController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port OldNodesController#index") } - /// `old_node:lookup_old_element` — DO arm. Source: `Api::OldNodesController#lookup_old_element`. + /// `old_nodes:lookup_old_element` — DO arm. Source: `Api::OldNodesController#lookup_old_element`. pub fn lookup_old_element(input: Input) -> Output { let _ = input; todo!("port Api::OldNodesController#lookup_old_element") } - /// `old_node:lookup_old_element_versions` — DO arm. Source: `Api::OldNodesController#lookup_old_element_versions`. + /// `old_nodes:lookup_old_element_versions` — DO arm. Source: `Api::OldNodesController#lookup_old_element_versions`. pub fn lookup_old_element_versions(input: Input) -> Output { let _ = input; todo!("port Api::OldNodesController#lookup_old_element_versions") } - /// `old_node:show` — DO arm. Source: `OldNodesController#show`. + /// `old_nodes:show` — DO arm. Source: `OldNodesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port OldNodesController#show") } } -pub mod old_relation { +pub mod old_relation_members { + use super::{Input, Output}; + /// `old_relation_members:show` — DO arm. Source: `OldRelationMembersController#show`. + pub fn show(input: Input) -> Output { + let _ = input; + todo!("port OldRelationMembersController#show") + } +} + +pub mod old_relations { use super::{Input, Output}; - /// `old_relation:list` — DO arm. Source: `OldRelationsController#index`. + /// `old_relations:list` — DO arm. Source: `OldRelationsController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port OldRelationsController#index") } - /// `old_relation:lookup_old_element` — DO arm. Source: `Api::OldRelationsController#lookup_old_element`. + /// `old_relations:lookup_old_element` — DO arm. Source: `Api::OldRelationsController#lookup_old_element`. pub fn lookup_old_element(input: Input) -> Output { let _ = input; todo!("port Api::OldRelationsController#lookup_old_element") } - /// `old_relation:lookup_old_element_versions` — DO arm. Source: `Api::OldRelationsController#lookup_old_element_versions`. + /// `old_relations:lookup_old_element_versions` — DO arm. Source: `Api::OldRelationsController#lookup_old_element_versions`. pub fn lookup_old_element_versions(input: Input) -> Output { let _ = input; todo!("port Api::OldRelationsController#lookup_old_element_versions") } - /// `old_relation:show` — DO arm. Source: `OldRelationsController#show`. + /// `old_relations:show` — DO arm. Source: `OldRelationsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port OldRelationsController#show") } } -pub mod old_relation_member { - use super::{Input, Output}; - /// `old_relation_member:show` — DO arm. Source: `OldRelationMembersController#show`. - pub fn show(input: Input) -> Output { - let _ = input; - todo!("port OldRelationMembersController#show") - } -} - -pub mod old_way { +pub mod old_ways { use super::{Input, Output}; - /// `old_way:list` — DO arm. Source: `OldWaysController#index`. + /// `old_ways:list` — DO arm. Source: `OldWaysController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port OldWaysController#index") } - /// `old_way:lookup_old_element` — DO arm. Source: `Api::OldWaysController#lookup_old_element`. + /// `old_ways:lookup_old_element` — DO arm. Source: `Api::OldWaysController#lookup_old_element`. pub fn lookup_old_element(input: Input) -> Output { let _ = input; todo!("port Api::OldWaysController#lookup_old_element") } - /// `old_way:lookup_old_element_versions` — DO arm. Source: `Api::OldWaysController#lookup_old_element_versions`. + /// `old_ways:lookup_old_element_versions` — DO arm. Source: `Api::OldWaysController#lookup_old_element_versions`. pub fn lookup_old_element_versions(input: Input) -> Output { let _ = input; todo!("port Api::OldWaysController#lookup_old_element_versions") } - /// `old_way:show` — DO arm. Source: `OldWaysController#show`. + /// `old_ways:show` — DO arm. Source: `OldWaysController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port OldWaysController#show") } } -pub mod outboxe { +pub mod outboxes { use super::{Input, Output}; - /// `outboxe:show` — DO arm. Source: `Api::Messages::OutboxesController#show`. + /// `outboxes:show` — DO arm. Sources (canonical tile): `Api::Messages::OutboxesController#show`, `Messages::OutboxesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::Messages::OutboxesController#show") } } -pub mod password { +pub mod passwords { use super::{Input, Output}; - /// `password:create` — DO arm. Source: `PasswordsController#create`. + /// `passwords:create` — DO arm. Source: `PasswordsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port PasswordsController#create") } - /// `password:edit` — DO arm. Source: `PasswordsController#edit`. + /// `passwords:edit` — DO arm. Source: `PasswordsController#edit`. pub fn edit(input: Input) -> Output { let _ = input; todo!("port PasswordsController#edit") } - /// `password:new_form` — DO arm. Source: `PasswordsController#new`. + /// `passwords:new_form` — DO arm. Source: `PasswordsController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port PasswordsController#new") } - /// `password:update` — DO arm. Source: `PasswordsController#update`. + /// `passwords:update` — DO arm. Source: `PasswordsController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port PasswordsController#update") } } -pub mod pd_declaration { +pub mod pd_declarations { use super::{Input, Output}; - /// `pd_declaration:create` — DO arm. Source: `Accounts::PdDeclarationsController#create`. + /// `pd_declarations:create` — DO arm. Source: `Accounts::PdDeclarationsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Accounts::PdDeclarationsController#create") } - /// `pd_declaration:show` — DO arm. Source: `Accounts::PdDeclarationsController#show`. + /// `pd_declarations:show` — DO arm. Source: `Accounts::PdDeclarationsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Accounts::PdDeclarationsController#show") } } -pub mod permission { +pub mod permissions { use super::{Input, Output}; - /// `permission:show` — DO arm. Source: `Api::PermissionsController#show`. + /// `permissions:show` — DO arm. Source: `Api::PermissionsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::PermissionsController#show") } } -pub mod picture { +pub mod pictures { use super::{Input, Output}; - /// `picture:show` — DO arm. Source: `Traces::PicturesController#show`. + /// `pictures:show` — DO arm. Source: `Traces::PicturesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Traces::PicturesController#show") } } -pub mod preference { +pub mod preferences { use super::{Input, Output}; - /// `preference:show` — DO arm. Source: `Preferences::PreferencesController#show`. + /// `preferences:show` — DO arm. Source: `Preferences::PreferencesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Preferences::PreferencesController#show") } - /// `preference:update` — DO arm. Source: `Preferences::PreferencesController#update`. + /// `preferences:update` — DO arm. Source: `Preferences::PreferencesController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Preferences::PreferencesController#update") } } -pub mod profile_section { +pub mod profile_sections { use super::{Input, Output}; - /// `profile_section:show` — DO arm. Source: `Profiles::ProfileSectionsController#show`. + /// `profile_sections:show` — DO arm. Source: `Profiles::ProfileSectionsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Profiles::ProfileSectionsController#show") } - /// `profile_section:update` — DO arm. Source: `Profiles::ProfileSectionsController#update`. + /// `profile_sections:update` — DO arm. Source: `Profiles::ProfileSectionsController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Profiles::ProfileSectionsController#update") } } -pub mod querie { +pub mod queries { use super::{Input, Output}; - /// `querie:fetch_text` — DO arm. Source: `Searches::QueriesController#fetch_text`. + /// `queries:fetch_text` — DO arm. Source: `Searches::QueriesController#fetch_text`. pub fn fetch_text(input: Input) -> Output { let _ = input; todo!("port Searches::QueriesController#fetch_text") } - /// `querie:fetch_xml` — DO arm. Source: `Searches::QueriesController#fetch_xml`. + /// `queries:fetch_xml` — DO arm. Source: `Searches::QueriesController#fetch_xml`. pub fn fetch_xml(input: Input) -> Output { let _ = input; todo!("port Searches::QueriesController#fetch_xml") } } -pub mod read_mark { +pub mod read_marks { use super::{Input, Output}; - /// `read_mark:create` — DO arm. Source: `Messages::ReadMarksController#create`. + /// `read_marks:create` — DO arm. Source: `Messages::ReadMarksController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Messages::ReadMarksController#create") } - /// `read_mark:delete` — DO arm. Source: `Messages::ReadMarksController#destroy`. + /// `read_marks:delete` — DO arm. Source: `Messages::ReadMarksController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Messages::ReadMarksController#destroy") } - /// `read_mark:mark` — DO arm. Source: `Messages::ReadMarksController#mark`. + /// `read_marks:mark` — DO arm. Source: `Messages::ReadMarksController#mark`. pub fn mark(input: Input) -> Output { let _ = input; todo!("port Messages::ReadMarksController#mark") } } -pub mod received_block { +pub mod received_blocks { use super::{Input, Output}; - /// `received_block:delete` — DO arm. Source: `Users::ReceivedBlocksController#destroy`. + /// `received_blocks:delete` — DO arm. Source: `Users::ReceivedBlocksController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Users::ReceivedBlocksController#destroy") } - /// `received_block:edit` — DO arm. Source: `Users::ReceivedBlocksController#edit`. + /// `received_blocks:edit` — DO arm. Source: `Users::ReceivedBlocksController#edit`. pub fn edit(input: Input) -> Output { let _ = input; todo!("port Users::ReceivedBlocksController#edit") } - /// `received_block:show` — DO arm. Source: `Users::ReceivedBlocksController#show`. + /// `received_blocks:show` — DO arm. Source: `Users::ReceivedBlocksController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Users::ReceivedBlocksController#show") } } -pub mod redaction { +pub mod redactions { use super::{Input, Output}; - /// `redaction:create` — DO arm. Source: `Api::OldElements::RedactionsController#create`. + /// `redactions:create` — DO arm. Sources (canonical tile): `Api::OldElements::RedactionsController#create`, `RedactionsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::OldElements::RedactionsController#create") } - /// `redaction:delete` — DO arm. Source: `Api::OldElements::RedactionsController#destroy`. + /// `redactions:delete` — DO arm. Sources (canonical tile): `Api::OldElements::RedactionsController#destroy`, `RedactionsController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::OldElements::RedactionsController#destroy") } - /// `redaction:edit` — DO arm. Source: `RedactionsController#edit`. + /// `redactions:edit` — DO arm. Source: `RedactionsController#edit`. pub fn edit(input: Input) -> Output { let _ = input; todo!("port RedactionsController#edit") } - /// `redaction:list` — DO arm. Source: `RedactionsController#index`. + /// `redactions:list` — DO arm. Source: `RedactionsController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port RedactionsController#index") } - /// `redaction:lookup_old_element` — DO arm. Source: `Api::OldNodes::RedactionsController#lookup_old_element`. + /// `redactions:lookup_old_element` — DO arm. Sources (canonical tile): `Api::OldNodes::RedactionsController#lookup_old_element`, `Api::OldRelations::RedactionsController#lookup_old_element`, `Api::OldWays::RedactionsController#lookup_old_element`. pub fn lookup_old_element(input: Input) -> Output { let _ = input; todo!("port Api::OldNodes::RedactionsController#lookup_old_element") } - /// `redaction:lookup_redaction` — DO arm. Source: `RedactionsController#lookup_redaction`. + /// `redactions:lookup_redaction` — DO arm. Source: `RedactionsController#lookup_redaction`. pub fn lookup_redaction(input: Input) -> Output { let _ = input; todo!("port RedactionsController#lookup_redaction") } - /// `redaction:new_form` — DO arm. Source: `RedactionsController#new`. + /// `redactions:new_form` — DO arm. Source: `RedactionsController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port RedactionsController#new") } - /// `redaction:show` — DO arm. Source: `RedactionsController#show`. + /// `redactions:show` — DO arm. Source: `RedactionsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port RedactionsController#show") } - /// `redaction:update` — DO arm. Source: `RedactionsController#update`. + /// `redactions:update` — DO arm. Source: `RedactionsController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port RedactionsController#update") } } -pub mod relation { +pub mod relation_members { + use super::{Input, Output}; + /// `relation_members:show` — DO arm. Source: `RelationMembersController#show`. + pub fn show(input: Input) -> Output { + let _ = input; + todo!("port RelationMembersController#show") + } +} + +pub mod relations { use super::{Input, Output}; - /// `relation:create` — DO arm. Source: `Api::RelationsController#create`. + /// `relations:create` — DO arm. Source: `Api::RelationsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::RelationsController#create") } - /// `relation:delete` — DO arm. Source: `Api::RelationsController#destroy`. + /// `relations:delete` — DO arm. Source: `Api::RelationsController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::RelationsController#destroy") } - /// `relation:list` — DO arm. Source: `Api::Nodes::RelationsController#index`. + /// `relations:list` — DO arm. Sources (canonical tile): `Api::Nodes::RelationsController#index`, `Api::Relations::RelationsController#index`, `Api::RelationsController#index`, `Api::Ways::RelationsController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Api::Nodes::RelationsController#index") } - /// `relation:show` — DO arm. Source: `Api::RelationsController#show`. + /// `relations:show` — DO arm. Sources (canonical tile): `Api::RelationsController#show`, `RelationsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::RelationsController#show") } - /// `relation:update` — DO arm. Source: `Api::RelationsController#update`. + /// `relations:update` — DO arm. Source: `Api::RelationsController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Api::RelationsController#update") } } -pub mod relation_member { +pub mod replies { use super::{Input, Output}; - /// `relation_member:show` — DO arm. Source: `RelationMembersController#show`. - pub fn show(input: Input) -> Output { + /// `replies:new_form` — DO arm. Source: `Messages::RepliesController#new`. + pub fn new_form(input: Input) -> Output { let _ = input; - todo!("port RelationMembersController#show") + todo!("port Messages::RepliesController#new") } } -pub mod replie { +pub mod reporters { use super::{Input, Output}; - /// `replie:new_form` — DO arm. Source: `Messages::RepliesController#new`. - pub fn new_form(input: Input) -> Output { + /// `reporters:list` — DO arm. Source: `Issues::ReportersController#index`. + pub fn list(input: Input) -> Output { let _ = input; - todo!("port Messages::RepliesController#new") + todo!("port Issues::ReportersController#index") } } -pub mod report { +pub mod reports { use super::{Input, Output}; - /// `report:create` — DO arm. Source: `ReportsController#create`. + /// `reports:create` — DO arm. Source: `ReportsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port ReportsController#create") } - /// `report:create_new_report_params` — DO arm. Source: `ReportsController#create_new_report_params`. + /// `reports:create_new_report_params` — DO arm. Source: `ReportsController#create_new_report_params`. pub fn create_new_report_params(input: Input) -> Output { let _ = input; todo!("port ReportsController#create_new_report_params") } - /// `report:default_assigned_role` — DO arm. Source: `ReportsController#default_assigned_role`. + /// `reports:default_assigned_role` — DO arm. Source: `ReportsController#default_assigned_role`. pub fn default_assigned_role(input: Input) -> Output { let _ = input; todo!("port ReportsController#default_assigned_role") } - /// `report:issue_params` — DO arm. Source: `ReportsController#issue_params`. + /// `reports:issue_params` — DO arm. Source: `ReportsController#issue_params`. pub fn issue_params(input: Input) -> Output { let _ = input; todo!("port ReportsController#issue_params") } - /// `report:new_form` — DO arm. Source: `ReportsController#new`. + /// `reports:new_form` — DO arm. Source: `ReportsController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port ReportsController#new") } - /// `report:report_params` — DO arm. Source: `ReportsController#report_params`. + /// `reports:report_params` — DO arm. Source: `ReportsController#report_params`. pub fn report_params(input: Input) -> Output { let _ = input; todo!("port ReportsController#report_params") } - /// `report:required_new_report_params_present?` — DO arm. Source: `ReportsController#required_new_report_params_present?`. + /// `reports:required_new_report_params_present?` — DO arm. Source: `ReportsController#required_new_report_params_present?`. pub fn required_new_report_params_present(input: Input) -> Output { let _ = input; todo!("port ReportsController#required_new_report_params_present?") } } -pub mod reporter { +pub mod searches { use super::{Input, Output}; - /// `reporter:list` — DO arm. Source: `Issues::ReportersController#index`. - pub fn list(input: Input) -> Output { - let _ = input; - todo!("port Issues::ReportersController#index") - } -} - -pub mod searche { - use super::{Input, Output}; - /// `searche:dms_regexp` — DO arm. Source: `SearchesController#dms_regexp`. + /// `searches:dms_regexp` — DO arm. Source: `SearchesController#dms_regexp`. pub fn dms_regexp(input: Input) -> Output { let _ = input; todo!("port SearchesController#dms_regexp") } - /// `searche:normalize_params` — DO arm. Source: `SearchesController#normalize_params`. + /// `searches:normalize_params` — DO arm. Source: `SearchesController#normalize_params`. pub fn normalize_params(input: Input) -> Output { let _ = input; todo!("port SearchesController#normalize_params") } - /// `searche:show` — DO arm. Source: `SearchesController#show`. + /// `searches:show` — DO arm. Source: `SearchesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port SearchesController#show") } - /// `searche:to_decdeg` — DO arm. Source: `SearchesController#to_decdeg`. + /// `searches:to_decdeg` — DO arm. Source: `SearchesController#to_decdeg`. pub fn to_decdeg(input: Input) -> Output { let _ = input; todo!("port SearchesController#to_decdeg") } } -pub mod session { +pub mod sessions { use super::{Input, Output}; - /// `session:create` — DO arm. Source: `SessionsController#create`. + /// `sessions:create` — DO arm. Source: `SessionsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port SessionsController#create") } - /// `session:delete` — DO arm. Source: `SessionsController#destroy`. + /// `sessions:delete` — DO arm. Source: `SessionsController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port SessionsController#destroy") } - /// `session:new_form` — DO arm. Source: `SessionsController#new`. + /// `sessions:new_form` — DO arm. Source: `SessionsController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port SessionsController#new") } - /// `session:password_authentication` — DO arm. Source: `SessionsController#password_authentication`. + /// `sessions:password_authentication` — DO arm. Source: `SessionsController#password_authentication`. pub fn password_authentication(input: Input) -> Output { let _ = input; todo!("port SessionsController#password_authentication") } } -pub mod share_pane { +pub mod share_panes { use super::{Input, Output}; - /// `share_pane:show` — DO arm. Source: `SharePanesController#show`. + /// `share_panes:show` — DO arm. Source: `SharePanesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port SharePanesController#show") @@ -1600,371 +1602,371 @@ pub mod site { } } -pub mod statuse { +pub mod statuses { use super::{Input, Output}; - /// `statuse:lookup_user_by_name` — DO arm. Source: `Users::StatusesController#lookup_user_by_name`. + /// `statuses:lookup_user_by_name` — DO arm. Source: `Users::StatusesController#lookup_user_by_name`. pub fn lookup_user_by_name(input: Input) -> Output { let _ = input; todo!("port Users::StatusesController#lookup_user_by_name") } - /// `statuse:update` — DO arm. Source: `Users::StatusesController#update`. + /// `statuses:update` — DO arm. Source: `Users::StatusesController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Users::StatusesController#update") } } -pub mod term { +pub mod terms { use super::{Input, Output}; - /// `term:show` — DO arm. Source: `Accounts::TermsController#show`. + /// `terms:show` — DO arm. Source: `Accounts::TermsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Accounts::TermsController#show") } - /// `term:update` — DO arm. Source: `Accounts::TermsController#update`. + /// `terms:update` — DO arm. Source: `Accounts::TermsController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Accounts::TermsController#update") } } -pub mod trace { +pub mod tracepoints { + use super::{Input, Output}; + /// `tracepoints:list` — DO arm. Source: `Api::TracepointsController#index`. + pub fn list(input: Input) -> Output { + let _ = input; + todo!("port Api::TracepointsController#index") + } +} + +pub mod traces { use super::{Input, Output}; - /// `trace:create` — DO arm. Source: `Api::TracesController#create`. + /// `traces:create` — DO arm. Sources (canonical tile): `Api::TracesController#create`, `TracesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::TracesController#create") } - /// `trace:default_visibility` — DO arm. Source: `TracesController#default_visibility`. + /// `traces:default_visibility` — DO arm. Source: `TracesController#default_visibility`. pub fn default_visibility(input: Input) -> Output { let _ = input; todo!("port TracesController#default_visibility") } - /// `trace:delete` — DO arm. Source: `Api::TracesController#destroy`. + /// `traces:delete` — DO arm. Sources (canonical tile): `Api::TracesController#destroy`, `TracesController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::TracesController#destroy") } - /// `trace:do_create` — DO arm. Source: `Api::TracesController#do_create`. + /// `traces:do_create` — DO arm. Sources (canonical tile): `Api::TracesController#do_create`, `TracesController#do_create`. pub fn do_create(input: Input) -> Output { let _ = input; todo!("port Api::TracesController#do_create") } - /// `trace:edit` — DO arm. Source: `TracesController#edit`. + /// `traces:edit` — DO arm. Source: `TracesController#edit`. pub fn edit(input: Input) -> Output { let _ = input; todo!("port TracesController#edit") } - /// `trace:list` — DO arm. Source: `Api::Users::TracesController#index`. + /// `traces:list` — DO arm. Sources (canonical tile): `Api::Users::TracesController#index`, `TracesController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Api::Users::TracesController#index") } - /// `trace:mine` — DO arm. Source: `TracesController#mine`. + /// `traces:mine` — DO arm. Source: `TracesController#mine`. pub fn mine(input: Input) -> Output { let _ = input; todo!("port TracesController#mine") } - /// `trace:new_form` — DO arm. Source: `TracesController#new`. + /// `traces:new_form` — DO arm. Source: `TracesController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port TracesController#new") } - /// `trace:offline_error` — DO arm. Source: `Api::TracesController#offline_error`. + /// `traces:offline_error` — DO arm. Source: `Api::TracesController#offline_error`. pub fn offline_error(input: Input) -> Output { let _ = input; todo!("port Api::TracesController#offline_error") } - /// `trace:offline_redirect` — DO arm. Source: `TracesController#offline_redirect`. + /// `traces:offline_redirect` — DO arm. Source: `TracesController#offline_redirect`. pub fn offline_redirect(input: Input) -> Output { let _ = input; todo!("port TracesController#offline_redirect") } - /// `trace:offline_warning` — DO arm. Source: `TracesController#offline_warning`. + /// `traces:offline_warning` — DO arm. Source: `TracesController#offline_warning`. pub fn offline_warning(input: Input) -> Output { let _ = input; todo!("port TracesController#offline_warning") } - /// `trace:show` — DO arm. Source: `Api::TracesController#show`. + /// `traces:show` — DO arm. Sources (canonical tile): `Api::TracesController#show`, `TracesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::TracesController#show") } - /// `trace:trace_params` — DO arm. Source: `TracesController#trace_params`. + /// `traces:trace_params` — DO arm. Source: `TracesController#trace_params`. pub fn trace_params(input: Input) -> Output { let _ = input; todo!("port TracesController#trace_params") } - /// `trace:update` — DO arm. Source: `Api::TracesController#update`. + /// `traces:update` — DO arm. Sources (canonical tile): `Api::TracesController#update`, `TracesController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Api::TracesController#update") } } -pub mod tracepoint { - use super::{Input, Output}; - /// `tracepoint:list` — DO arm. Source: `Api::TracepointsController#index`. - pub fn list(input: Input) -> Output { - let _ = input; - todo!("port Api::TracepointsController#index") - } -} - -pub mod upload { +pub mod uploads { use super::{Input, Output}; - /// `upload:create` — DO arm. Source: `Api::Changesets::UploadsController#create`. + /// `uploads:create` — DO arm. Source: `Api::Changesets::UploadsController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::Changesets::UploadsController#create") } } -pub mod user { +pub mod user_blocks { use super::{Input, Output}; - /// `user:auth_failure` — DO arm. Source: `UsersController#auth_failure`. - pub fn auth_failure(input: Input) -> Output { - let _ = input; - todo!("port UsersController#auth_failure") - } - /// `user:auth_success` — DO arm. Source: `UsersController#auth_success`. - pub fn auth_success(input: Input) -> Output { - let _ = input; - todo!("port UsersController#auth_success") - } - /// `user:check_signup_allowed?` — DO arm. Source: `UsersController#check_signup_allowed?`. - pub fn check_signup_allowed(input: Input) -> Output { - let _ = input; - todo!("port UsersController#check_signup_allowed?") - } - /// `user:create` — DO arm. Source: `UsersController#create`. - pub fn create(input: Input) -> Output { - let _ = input; - todo!("port UsersController#create") - } - /// `user:details` — DO arm. Source: `Api::UsersController#details`. - pub fn details(input: Input) -> Output { - let _ = input; - todo!("port Api::UsersController#details") - } - /// `user:go_public` — DO arm. Source: `UsersController#go_public`. - pub fn go_public(input: Input) -> Output { - let _ = input; - todo!("port UsersController#go_public") - } - /// `user:list` — DO arm. Source: `Api::UsersController#index`. - pub fn list(input: Input) -> Output { - let _ = input; - todo!("port Api::UsersController#index") - } - /// `user:new_form` — DO arm. Source: `UsersController#new`. - pub fn new_form(input: Input) -> Output { - let _ = input; - todo!("port UsersController#new") - } - /// `user:save_new_user` — DO arm. Source: `UsersController#save_new_user`. - pub fn save_new_user(input: Input) -> Output { - let _ = input; - todo!("port UsersController#save_new_user") - } - /// `user:show` — DO arm. Source: `Api::UsersController#show`. - pub fn show(input: Input) -> Output { - let _ = input; - todo!("port Api::UsersController#show") - } - /// `user:user_params` — DO arm. Source: `UsersController#user_params`. - pub fn user_params(input: Input) -> Output { - let _ = input; - todo!("port UsersController#user_params") - } - /// `user:valid_turnstile_response?` — DO arm. Source: `UsersController#valid_turnstile_response?`. - pub fn valid_turnstile_response(input: Input) -> Output { - let _ = input; - todo!("port UsersController#valid_turnstile_response?") - } - /// `user:welcome_options` — DO arm. Source: `UsersController#welcome_options`. - pub fn welcome_options(input: Input) -> Output { - let _ = input; - todo!("port UsersController#welcome_options") - } -} - -pub mod user_block { - use super::{Input, Output}; - /// `user_block:create` — DO arm. Source: `Api::UserBlocksController#create`. + /// `user_blocks:create` — DO arm. Sources (canonical tile): `Api::UserBlocksController#create`, `UserBlocksController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::UserBlocksController#create") } - /// `user_block:edit` — DO arm. Source: `UserBlocksController#edit`. + /// `user_blocks:edit` — DO arm. Source: `UserBlocksController#edit`. pub fn edit(input: Input) -> Output { let _ = input; todo!("port UserBlocksController#edit") } - /// `user_block:list` — DO arm. Source: `UserBlocksController#index`. + /// `user_blocks:list` — DO arm. Source: `UserBlocksController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port UserBlocksController#index") } - /// `user_block:lookup_user_block` — DO arm. Source: `UserBlocksController#lookup_user_block`. + /// `user_blocks:lookup_user_block` — DO arm. Source: `UserBlocksController#lookup_user_block`. pub fn lookup_user_block(input: Input) -> Output { let _ = input; todo!("port UserBlocksController#lookup_user_block") } - /// `user_block:new_form` — DO arm. Source: `UserBlocksController#new`. + /// `user_blocks:new_form` — DO arm. Source: `UserBlocksController#new`. pub fn new_form(input: Input) -> Output { let _ = input; todo!("port UserBlocksController#new") } - /// `user_block:require_valid_params` — DO arm. Source: `UserBlocksController#require_valid_params`. + /// `user_blocks:require_valid_params` — DO arm. Source: `UserBlocksController#require_valid_params`. pub fn require_valid_params(input: Input) -> Output { let _ = input; todo!("port UserBlocksController#require_valid_params") } - /// `user_block:show` — DO arm. Source: `Api::UserBlocksController#show`. + /// `user_blocks:show` — DO arm. Sources (canonical tile): `Api::UserBlocksController#show`, `UserBlocksController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::UserBlocksController#show") } - /// `user_block:update` — DO arm. Source: `UserBlocksController#update`. + /// `user_blocks:update` — DO arm. Source: `UserBlocksController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port UserBlocksController#update") } } -pub mod user_mute { +pub mod user_mutes { use super::{Input, Output}; - /// `user_mute:create` — DO arm. Source: `UserMutesController#create`. + /// `user_mutes:create` — DO arm. Source: `UserMutesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port UserMutesController#create") } - /// `user_mute:delete` — DO arm. Source: `UserMutesController#destroy`. + /// `user_mutes:delete` — DO arm. Source: `UserMutesController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port UserMutesController#destroy") } - /// `user_mute:list` — DO arm. Source: `UserMutesController#index`. + /// `user_mutes:list` — DO arm. Source: `UserMutesController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port UserMutesController#index") } } -pub mod user_preference { +pub mod user_preferences { use super::{Input, Output}; - /// `user_preference:delete` — DO arm. Source: `Api::UserPreferencesController#destroy`. + /// `user_preferences:delete` — DO arm. Source: `Api::UserPreferencesController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::UserPreferencesController#destroy") } - /// `user_preference:list` — DO arm. Source: `Api::UserPreferencesController#index`. + /// `user_preferences:list` — DO arm. Source: `Api::UserPreferencesController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Api::UserPreferencesController#index") } - /// `user_preference:show` — DO arm. Source: `Api::UserPreferencesController#show`. + /// `user_preferences:show` — DO arm. Source: `Api::UserPreferencesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::UserPreferencesController#show") } - /// `user_preference:update` — DO arm. Source: `Api::UserPreferencesController#update`. + /// `user_preferences:update` — DO arm. Source: `Api::UserPreferencesController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Api::UserPreferencesController#update") } - /// `user_preference:update_all` — DO arm. Source: `Api::UserPreferencesController#update_all`. + /// `user_preferences:update_all` — DO arm. Source: `Api::UserPreferencesController#update_all`. pub fn update_all(input: Input) -> Output { let _ = input; todo!("port Api::UserPreferencesController#update_all") } } -pub mod user_role { +pub mod user_roles { use super::{Input, Output}; - /// `user_role:create` — DO arm. Source: `UserRolesController#create`. + /// `user_roles:create` — DO arm. Source: `UserRolesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port UserRolesController#create") } - /// `user_role:delete` — DO arm. Source: `UserRolesController#destroy`. + /// `user_roles:delete` — DO arm. Source: `UserRolesController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port UserRolesController#destroy") } - /// `user_role:in_role` — DO arm. Source: `UserRolesController#in_role`. + /// `user_roles:in_role` — DO arm. Source: `UserRolesController#in_role`. pub fn in_role(input: Input) -> Output { let _ = input; todo!("port UserRolesController#in_role") } - /// `user_role:not_in_role` — DO arm. Source: `UserRolesController#not_in_role`. + /// `user_roles:not_in_role` — DO arm. Source: `UserRolesController#not_in_role`. pub fn not_in_role(input: Input) -> Output { let _ = input; todo!("port UserRolesController#not_in_role") } - /// `user_role:require_valid_role` — DO arm. Source: `UserRolesController#require_valid_role`. + /// `user_roles:require_valid_role` — DO arm. Source: `UserRolesController#require_valid_role`. pub fn require_valid_role(input: Input) -> Output { let _ = input; todo!("port UserRolesController#require_valid_role") } } -pub mod version { +pub mod users { + use super::{Input, Output}; + /// `users:auth_failure` — DO arm. Source: `UsersController#auth_failure`. + pub fn auth_failure(input: Input) -> Output { + let _ = input; + todo!("port UsersController#auth_failure") + } + /// `users:auth_success` — DO arm. Source: `UsersController#auth_success`. + pub fn auth_success(input: Input) -> Output { + let _ = input; + todo!("port UsersController#auth_success") + } + /// `users:check_signup_allowed?` — DO arm. Source: `UsersController#check_signup_allowed?`. + pub fn check_signup_allowed(input: Input) -> Output { + let _ = input; + todo!("port UsersController#check_signup_allowed?") + } + /// `users:create` — DO arm. Source: `UsersController#create`. + pub fn create(input: Input) -> Output { + let _ = input; + todo!("port UsersController#create") + } + /// `users:details` — DO arm. Source: `Api::UsersController#details`. + pub fn details(input: Input) -> Output { + let _ = input; + todo!("port Api::UsersController#details") + } + /// `users:go_public` — DO arm. Source: `UsersController#go_public`. + pub fn go_public(input: Input) -> Output { + let _ = input; + todo!("port UsersController#go_public") + } + /// `users:list` — DO arm. Source: `Api::UsersController#index`. + pub fn list(input: Input) -> Output { + let _ = input; + todo!("port Api::UsersController#index") + } + /// `users:new_form` — DO arm. Source: `UsersController#new`. + pub fn new_form(input: Input) -> Output { + let _ = input; + todo!("port UsersController#new") + } + /// `users:save_new_user` — DO arm. Source: `UsersController#save_new_user`. + pub fn save_new_user(input: Input) -> Output { + let _ = input; + todo!("port UsersController#save_new_user") + } + /// `users:show` — DO arm. Sources (canonical tile): `Api::UsersController#show`, `UsersController#show`. + pub fn show(input: Input) -> Output { + let _ = input; + todo!("port Api::UsersController#show") + } + /// `users:user_params` — DO arm. Source: `UsersController#user_params`. + pub fn user_params(input: Input) -> Output { + let _ = input; + todo!("port UsersController#user_params") + } + /// `users:valid_turnstile_response?` — DO arm. Source: `UsersController#valid_turnstile_response?`. + pub fn valid_turnstile_response(input: Input) -> Output { + let _ = input; + todo!("port UsersController#valid_turnstile_response?") + } + /// `users:welcome_options` — DO arm. Source: `UsersController#welcome_options`. + pub fn welcome_options(input: Input) -> Output { + let _ = input; + todo!("port UsersController#welcome_options") + } +} + +pub mod versions { use super::{Input, Output}; - /// `version:show` — DO arm. Source: `Api::VersionsController#show`. + /// `versions:show` — DO arm. Source: `Api::VersionsController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::VersionsController#show") } } -pub mod visibilitie { +pub mod visibilities { use super::{Input, Output}; - /// `visibilitie:create` — DO arm. Source: `Api::ChangesetComments::VisibilitiesController#create`. + /// `visibilities:create` — DO arm. Source: `Api::ChangesetComments::VisibilitiesController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetComments::VisibilitiesController#create") } - /// `visibilitie:delete` — DO arm. Source: `Api::ChangesetComments::VisibilitiesController#destroy`. + /// `visibilities:delete` — DO arm. Source: `Api::ChangesetComments::VisibilitiesController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::ChangesetComments::VisibilitiesController#destroy") } } -pub mod way { +pub mod ways { use super::{Input, Output}; - /// `way:create` — DO arm. Source: `Api::WaysController#create`. + /// `ways:create` — DO arm. Source: `Api::WaysController#create`. pub fn create(input: Input) -> Output { let _ = input; todo!("port Api::WaysController#create") } - /// `way:delete` — DO arm. Source: `Api::WaysController#destroy`. + /// `ways:delete` — DO arm. Source: `Api::WaysController#destroy`. pub fn delete(input: Input) -> Output { let _ = input; todo!("port Api::WaysController#destroy") } - /// `way:list` — DO arm. Source: `Api::Nodes::WaysController#index`. + /// `ways:list` — DO arm. Sources (canonical tile): `Api::Nodes::WaysController#index`, `Api::WaysController#index`. pub fn list(input: Input) -> Output { let _ = input; todo!("port Api::Nodes::WaysController#index") } - /// `way:show` — DO arm. Source: `Api::WaysController#show`. + /// `ways:show` — DO arm. Sources (canonical tile): `Api::WaysController#show`, `WaysController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port Api::WaysController#show") } - /// `way:update` — DO arm. Source: `Api::WaysController#update`. + /// `ways:update` — DO arm. Source: `Api::WaysController#update`. pub fn update(input: Input) -> Output { let _ = input; todo!("port Api::WaysController#update") } } -pub mod webgl_error_pane { +pub mod webgl_error_panes { use super::{Input, Output}; - /// `webgl_error_pane:show` — DO arm. Source: `WebglErrorPanesController#show`. + /// `webgl_error_panes:show` — DO arm. Source: `WebglErrorPanesController#show`. pub fn show(input: Input) -> Output { let _ = input; todo!("port WebglErrorPanesController#show") diff --git a/.claude/harvest/osm-website-rs/crates/osm-domain/src/lib.rs b/.claude/harvest/osm-website-rs/crates/osm-domain/src/lib.rs index 5079656..9e9c186 100644 --- a/.claude/harvest/osm-website-rs/crates/osm-domain/src/lib.rs +++ b/.claude/harvest/osm-website-rs/crates/osm-domain/src/lib.rs @@ -4,17 +4,25 @@ //! - [`generated`] — the 50 rendered domain **structs** (THINK arm): associations //! become typed edge fields (`belongs_to → Option`, `has_many → Vec`), //! each with a `new(..)` constructor. -//! - [`osm`] — the **DO arm**: controller actions as standalone -//! `osm::::(input)` free functions (`osm::map::render(..)`), -//! NOT methods on the structs. +//! - [`controllers`] — the **DO arm**: a faithful mirror of `app/controllers/`. +//! Each module is a source controller by its own verbatim (snake) name +//! (`NodesController → nodes`, `MapController → map` — no singularisation); +//! each fn is an `is_a` action (`show`, `render`, …), standalone, NOT a method +//! on the record. The controller modules are re-exported at the crate root, so +//! `osm_domain::controllers::nodes::show(input)` and the re-exported +//! `osm_domain::nodes::show(input)` both resolve. //! //! Rendered by `ogar-render-askama`; do not edit by hand. [`HARVESTED_CLASSES`] //! is the flat inventory. pub mod generated; -#[path = "generated/actions.rs"] -pub mod osm; +#[path = "generated/controllers.rs"] +pub mod controllers; + +// Re-export the controller modules at the crate root — the ergonomic surface +// over the faithful mirror (`osm_domain::nodes::show` ≡ `controllers::nodes::show`). +pub use controllers::*; /// The 50 classes harvested from `openstreetmap-website@173885c1` `app/models`, /// in the order OGAR lifted them. Each maps to a rendered domain module. diff --git a/.claude/harvest/osm-website-rs/harvest/osm_actions.rail b/.claude/harvest/osm-website-rs/harvest/osm_actions.rail index f2a98f3..42ef1c8 100644 --- a/.claude/harvest/osm-website-rs/harvest/osm_actions.rail +++ b/.claude/harvest/osm-website-rs/harvest/osm_actions.rail @@ -2,11 +2,11 @@ # a u8:u8 HHTL tile per action; cast = fix one axis, walk the other # part_of[id]:is_a[id]\tcontroller#action -account[0x01]:delete[0x07] AccountsController#destroy -account[0x01]:show[0x02] AccountsController#show -account[0x01]:update[0x06] AccountsController#update -active_list[0x02]:show[0x02] Api::UserBlocks::ActiveListsController#show -advanced_preference[0x03]:update_preferences[0x84] Preferences::AdvancedPreferencesController#update_preferences +accounts[0x01]:delete[0x07] AccountsController#destroy +accounts[0x01]:show[0x02] AccountsController#show +accounts[0x01]:update[0x06] AccountsController#update +active_lists[0x02]:show[0x02] Api::UserBlocks::ActiveListsController#show +advanced_preferences[0x03]:update_preferences[0x84] Preferences::AdvancedPreferencesController#update_preferences api[0x04]:api_call_handle_error[0x0A] ApiController#api_call_handle_error api[0x04]:api_call_timeout[0x0B] ApiController#api_call_timeout api[0x04]:authorize[0x11] ApiController#authorize @@ -42,231 +42,231 @@ application[0x05]:set_locale[0x77] ApplicationController#set_locale application[0x05]:site_layout[0x7D] ApplicationController#site_layout application[0x05]:update_totp[0x86] ApplicationController#update_totp application[0x05]:web_timeout[0x89] ApplicationController#web_timeout -basic_preference[0x06]:update_preferences[0x84] Preferences::BasicPreferencesController#update_preferences -capabilitie[0x07]:show[0x02] Api::CapabilitiesController#show -changeset[0x08]:conditions_bbox[0x21] Api::ChangesetsController#conditions_bbox -changeset[0x08]:conditions_bbox[0x21] ChangesetsController#conditions_bbox -changeset[0x08]:conditions_closed[0x22] Api::ChangesetsController#conditions_closed -changeset[0x08]:conditions_ids[0x23] Api::ChangesetsController#conditions_ids -changeset[0x08]:conditions_nonempty[0x24] ChangesetsController#conditions_nonempty -changeset[0x08]:conditions_open[0x25] Api::ChangesetsController#conditions_open -changeset[0x08]:conditions_time[0x26] Api::ChangesetsController#conditions_time -changeset[0x08]:conditions_user[0x27] Api::ChangesetsController#conditions_user -changeset[0x08]:create[0x04] Api::ChangesetsController#create -changeset[0x08]:feed[0x37] ChangesetsController#feed -changeset[0x08]:list[0x01] Api::ChangesetsController#index -changeset[0x08]:list[0x01] ChangesetsController#index -changeset[0x08]:load_nodes[0x48] ChangesetsController#load_nodes -changeset[0x08]:load_relations[0x49] ChangesetsController#load_relations -changeset[0x08]:load_ways[0x4A] ChangesetsController#load_ways -changeset[0x08]:show[0x02] Api::ChangesetsController#show -changeset[0x08]:show[0x02] ChangesetsController#show -changeset[0x08]:update[0x06] Api::ChangesetsController#update -changeset[0x08]:wrap_lon[0x8C] ChangesetsController#wrap_lon -changeset_comment[0x09]:create[0x04] Api::ChangesetCommentsController#create -changeset_comment[0x09]:list[0x01] Api::ChangesetCommentsController#index -changeset_comment[0x09]:list[0x01] Users::ChangesetCommentsController#index -changeset_comment[0x09]:rate_limit_exceeded?[0x60] Api::ChangesetCommentsController#rate_limit_exceeded? -changeset_subscription[0x0A]:create[0x04] Api::ChangesetSubscriptionsController#create -changeset_subscription[0x0A]:create[0x04] ChangesetSubscriptionsController#create -changeset_subscription[0x0A]:delete[0x07] Api::ChangesetSubscriptionsController#destroy -changeset_subscription[0x0A]:delete[0x07] ChangesetSubscriptionsController#destroy -changeset_subscription[0x0A]:show[0x02] ChangesetSubscriptionsController#show -close[0x0B]:update[0x06] Api::Changesets::ClosesController#update -companie[0x0C]:update_profile[0x85] Profiles::CompaniesController#update_profile -confirmation[0x0D]:confirm[0x28] ConfirmationsController#confirm -confirmation[0x0D]:confirm_email[0x29] ConfirmationsController#confirm_email -confirmation[0x0D]:confirm_resend[0x2A] ConfirmationsController#confirm_resend -confirmation[0x0D]:gravatar_status_message[0x3E] ConfirmationsController#gravatar_status_message -dashboard[0x0E]:show[0x02] DashboardsController#show +basic_preferences[0x06]:update_preferences[0x84] Preferences::BasicPreferencesController#update_preferences +capabilities[0x07]:show[0x02] Api::CapabilitiesController#show +changeset_comments[0x08]:create[0x04] Api::ChangesetCommentsController#create +changeset_comments[0x08]:list[0x01] Api::ChangesetCommentsController#index +changeset_comments[0x08]:list[0x01] Users::ChangesetCommentsController#index +changeset_comments[0x08]:rate_limit_exceeded?[0x60] Api::ChangesetCommentsController#rate_limit_exceeded? +changeset_subscriptions[0x09]:create[0x04] Api::ChangesetSubscriptionsController#create +changeset_subscriptions[0x09]:create[0x04] ChangesetSubscriptionsController#create +changeset_subscriptions[0x09]:delete[0x07] Api::ChangesetSubscriptionsController#destroy +changeset_subscriptions[0x09]:delete[0x07] ChangesetSubscriptionsController#destroy +changeset_subscriptions[0x09]:show[0x02] ChangesetSubscriptionsController#show +changesets[0x0A]:conditions_bbox[0x21] Api::ChangesetsController#conditions_bbox +changesets[0x0A]:conditions_bbox[0x21] ChangesetsController#conditions_bbox +changesets[0x0A]:conditions_closed[0x22] Api::ChangesetsController#conditions_closed +changesets[0x0A]:conditions_ids[0x23] Api::ChangesetsController#conditions_ids +changesets[0x0A]:conditions_nonempty[0x24] ChangesetsController#conditions_nonempty +changesets[0x0A]:conditions_open[0x25] Api::ChangesetsController#conditions_open +changesets[0x0A]:conditions_time[0x26] Api::ChangesetsController#conditions_time +changesets[0x0A]:conditions_user[0x27] Api::ChangesetsController#conditions_user +changesets[0x0A]:create[0x04] Api::ChangesetsController#create +changesets[0x0A]:feed[0x37] ChangesetsController#feed +changesets[0x0A]:list[0x01] Api::ChangesetsController#index +changesets[0x0A]:list[0x01] ChangesetsController#index +changesets[0x0A]:load_nodes[0x48] ChangesetsController#load_nodes +changesets[0x0A]:load_relations[0x49] ChangesetsController#load_relations +changesets[0x0A]:load_ways[0x4A] ChangesetsController#load_ways +changesets[0x0A]:show[0x02] Api::ChangesetsController#show +changesets[0x0A]:show[0x02] ChangesetsController#show +changesets[0x0A]:update[0x06] Api::ChangesetsController#update +changesets[0x0A]:wrap_lon[0x8C] ChangesetsController#wrap_lon +closes[0x0B]:update[0x06] Api::Changesets::ClosesController#update +companies[0x0C]:update_profile[0x85] Profiles::CompaniesController#update_profile +confirmations[0x0D]:confirm[0x28] ConfirmationsController#confirm +confirmations[0x0D]:confirm_email[0x29] ConfirmationsController#confirm_email +confirmations[0x0D]:confirm_resend[0x2A] ConfirmationsController#confirm_resend +confirmations[0x0D]:gravatar_status_message[0x3E] ConfirmationsController#gravatar_status_message +dashboards[0x0E]:show[0x02] DashboardsController#show data[0x0F]:offline_error[0x58] Api::Traces::DataController#offline_error data[0x0F]:offline_redirect[0x59] Traces::DataController#offline_redirect data[0x0F]:show[0x02] Api::Traces::DataController#show data[0x0F]:show[0x02] Traces::DataController#show -deletion[0x10]:show[0x02] Accounts::DeletionsController#show -description[0x11]:update_profile[0x85] Profiles::DescriptionsController#update_profile -diary_comment[0x12]:comment_params[0x1F] DiaryCommentsController#comment_params -diary_comment[0x12]:create[0x04] DiaryCommentsController#create -diary_comment[0x12]:hide[0x40] DiaryCommentsController#hide -diary_comment[0x12]:list[0x01] Users::DiaryCommentsController#index -diary_comment[0x12]:unhide[0x81] DiaryCommentsController#unhide -diary_entrie[0x13]:create[0x04] DiaryEntriesController#create -diary_entrie[0x13]:edit[0x05] DiaryEntriesController#edit -diary_entrie[0x13]:entry_params[0x35] DiaryEntriesController#entry_params -diary_entrie[0x13]:hide[0x40] DiaryEntriesController#hide -diary_entrie[0x13]:list[0x01] DiaryEntriesController#index -diary_entrie[0x13]:new_form[0x03] DiaryEntriesController#new -diary_entrie[0x13]:rss[0x71] DiaryEntriesController#rss -diary_entrie[0x13]:set_map_location[0x78] DiaryEntriesController#set_map_location -diary_entrie[0x13]:show[0x02] DiaryEntriesController#show -diary_entrie[0x13]:subscribe[0x7E] DiaryEntriesController#subscribe -diary_entrie[0x13]:unhide[0x81] DiaryEntriesController#unhide -diary_entrie[0x13]:unsubscribe[0x82] DiaryEntriesController#unsubscribe -diary_entrie[0x13]:update[0x06] DiaryEntriesController#update -direction[0x14]:show[0x02] DirectionsController#show -download[0x15]:show[0x02] Api::Changesets::DownloadsController#show -download[0x15]:show_redactions?[0x7C] Api::Changesets::DownloadsController#show_redactions? -error[0x16]:bad_request[0x13] ErrorsController#bad_request -error[0x16]:forbidden[0x3B] ErrorsController#forbidden -error[0x16]:internal_server_error[0x44] ErrorsController#internal_server_error -error[0x16]:not_found[0x55] ErrorsController#not_found +deletions[0x10]:show[0x02] Accounts::DeletionsController#show +descriptions[0x11]:update_profile[0x85] Profiles::DescriptionsController#update_profile +diary_comments[0x12]:comment_params[0x1F] DiaryCommentsController#comment_params +diary_comments[0x12]:create[0x04] DiaryCommentsController#create +diary_comments[0x12]:hide[0x40] DiaryCommentsController#hide +diary_comments[0x12]:list[0x01] Users::DiaryCommentsController#index +diary_comments[0x12]:unhide[0x81] DiaryCommentsController#unhide +diary_entries[0x13]:create[0x04] DiaryEntriesController#create +diary_entries[0x13]:edit[0x05] DiaryEntriesController#edit +diary_entries[0x13]:entry_params[0x35] DiaryEntriesController#entry_params +diary_entries[0x13]:hide[0x40] DiaryEntriesController#hide +diary_entries[0x13]:list[0x01] DiaryEntriesController#index +diary_entries[0x13]:new_form[0x03] DiaryEntriesController#new +diary_entries[0x13]:rss[0x71] DiaryEntriesController#rss +diary_entries[0x13]:set_map_location[0x78] DiaryEntriesController#set_map_location +diary_entries[0x13]:show[0x02] DiaryEntriesController#show +diary_entries[0x13]:subscribe[0x7E] DiaryEntriesController#subscribe +diary_entries[0x13]:unhide[0x81] DiaryEntriesController#unhide +diary_entries[0x13]:unsubscribe[0x82] DiaryEntriesController#unsubscribe +diary_entries[0x13]:update[0x06] DiaryEntriesController#update +directions[0x14]:show[0x02] DirectionsController#show +downloads[0x15]:show[0x02] Api::Changesets::DownloadsController#show +downloads[0x15]:show_redactions?[0x7C] Api::Changesets::DownloadsController#show_redactions? +errors[0x16]:bad_request[0x13] ErrorsController#bad_request +errors[0x16]:forbidden[0x3B] ErrorsController#forbidden +errors[0x16]:internal_server_error[0x44] ErrorsController#internal_server_error +errors[0x16]:not_found[0x55] ErrorsController#not_found export[0x17]:create[0x04] ExportController#create export[0x17]:show[0x02] ExportController#show -feature_querie[0x18]:show[0x02] FeatureQueriesController#show -feed[0x19]:show[0x02] ChangesetComments::FeedsController#show -feed[0x19]:show[0x02] Traces::FeedsController#show -follow[0x1A]:create[0x04] FollowsController#create -follow[0x1A]:delete[0x07] FollowsController#destroy -follow[0x1A]:show[0x02] FollowsController#show -heatmap[0x1B]:show[0x02] Users::HeatmapsController#show -heatmap[0x1B]:update_profile[0x85] Profiles::HeatmapsController#update_profile -home[0x1C]:show[0x02] Accounts::HomesController#show -icon[0x1D]:show[0x02] Traces::IconsController#show -image[0x1E]:update_profile[0x85] Profiles::ImagesController#update_profile -inboxe[0x1F]:show[0x02] Api::Messages::InboxesController#show -inboxe[0x1F]:show[0x02] Messages::InboxesController#show -issue[0x20]:find_issue[0x3A] IssuesController#find_issue -issue[0x20]:ignore[0x42] IssuesController#ignore -issue[0x20]:list[0x01] IssuesController#index -issue[0x20]:reopen[0x64] IssuesController#reopen -issue[0x20]:resolve[0x6F] IssuesController#resolve -issue[0x20]:show[0x02] IssuesController#show -issue_comment[0x21]:create[0x04] IssueCommentsController#create -issue_comment[0x21]:issue_comment_params[0x46] IssueCommentsController#issue_comment_params -issue_comment[0x21]:reassign_issue[0x61] IssueCommentsController#reassign_issue -issued_block[0x22]:show[0x02] Users::IssuedBlocksController#show -languages_pane[0x23]:show[0x02] LanguagesPanesController#show -latlon_querie[0x24]:create[0x04] Searches::LatlonQueriesController#create -layers_pane[0x25]:show[0x02] LayersPanesController#show -legend_pane[0x26]:show[0x02] LegendPanesController#show -link[0x27]:update_profile[0x85] Profiles::LinksController#update_profile -list[0x28]:show[0x02] Users::ListsController#show -list[0x28]:update[0x06] Users::ListsController#update -location[0x29]:show[0x02] Profiles::LocationsController#show -location[0x29]:update_profile[0x85] Profiles::LocationsController#update_profile -mailboxe[0x2A]:show_messages[0x7B] Api::Messages::MailboxesController#show_messages -map[0x2B]:show[0x02] Api::MapsController#show -message[0x2C]:create[0x04] Api::MessagesController#create -message[0x2C]:create[0x04] MessagesController#create -message[0x2C]:delete[0x07] Api::MessagesController#destroy -message[0x2C]:delete[0x07] MessagesController#destroy -message[0x2C]:message_params[0x52] MessagesController#message_params -message[0x2C]:new_form[0x03] MessagesController#new -message[0x2C]:show[0x02] Api::MessagesController#show -message[0x2C]:show[0x02] MessagesController#show -message[0x2C]:update[0x06] Api::MessagesController#update -mute[0x2D]:delete[0x07] Messages::MutesController#destroy -muted_inboxe[0x2E]:show[0x02] Messages::MutedInboxesController#show -node[0x2F]:create[0x04] Api::NodesController#create -node[0x2F]:delete[0x07] Api::NodesController#destroy -node[0x2F]:list[0x01] Api::NodesController#index -node[0x2F]:show[0x02] Api::NodesController#show -node[0x2F]:show[0x02] NodesController#show -node[0x2F]:update[0x06] Api::NodesController#update -nominatim_querie[0x30]:create[0x04] Searches::NominatimQueriesController#create -nominatim_reverse_querie[0x31]:create[0x04] Searches::NominatimReverseQueriesController#create -note[0x32]:add_comment[0x09] Api::NotesController#add_comment -note[0x32]:author_info[0x10] Api::NotesController#author_info -note[0x32]:bbox_condition[0x14] Api::NotesController#bbox_condition -note[0x32]:close[0x1B] Api::NotesController#close -note[0x32]:closed_condition[0x1D] Api::NotesController#closed_condition -note[0x32]:comment[0x1E] Api::NotesController#comment -note[0x32]:create[0x04] Api::NotesController#create -note[0x32]:delete[0x07] Api::NotesController#destroy -note[0x32]:feed[0x37] Api::NotesController#feed -note[0x32]:list[0x01] Api::NotesController#index -note[0x32]:list[0x01] NotesController#index -note[0x32]:new_form[0x03] NotesController#new -note[0x32]:reopen[0x64] Api::NotesController#reopen -note[0x32]:search[0x75] Api::NotesController#search -note[0x32]:show[0x02] Api::NotesController#show -note[0x32]:show[0x02] NotesController#show -note_subscription[0x33]:create[0x04] Api::NoteSubscriptionsController#create -note_subscription[0x33]:delete[0x07] Api::NoteSubscriptionsController#destroy -notification_preference[0x34]:update_preferences[0x84] Preferences::NotificationPreferencesController#update_preferences -oauth2_application[0x35]:application_params[0x0D] Oauth2ApplicationsController#application_params -oauth2_application[0x35]:list[0x01] Oauth2ApplicationsController#index -oauth2_application[0x35]:set_application[0x76] Oauth2ApplicationsController#set_application -old_element[0x36]:list[0x01] Api::OldElementsController#index -old_element[0x36]:require_moderator_for_unredacted_history[0x68] OldElementsController#require_moderator_for_unredacted_history -old_element[0x36]:show[0x02] Api::OldElementsController#show -old_element[0x36]:show_redactions?[0x7C] Api::OldElementsController#show_redactions? -old_node[0x37]:list[0x01] OldNodesController#index -old_node[0x37]:lookup_old_element[0x4B] Api::OldNodesController#lookup_old_element -old_node[0x37]:lookup_old_element_versions[0x4C] Api::OldNodesController#lookup_old_element_versions -old_node[0x37]:show[0x02] OldNodesController#show -old_relation[0x38]:list[0x01] OldRelationsController#index -old_relation[0x38]:lookup_old_element[0x4B] Api::OldRelationsController#lookup_old_element -old_relation[0x38]:lookup_old_element_versions[0x4C] Api::OldRelationsController#lookup_old_element_versions -old_relation[0x38]:show[0x02] OldRelationsController#show -old_relation_member[0x39]:show[0x02] OldRelationMembersController#show -old_way[0x3A]:list[0x01] OldWaysController#index -old_way[0x3A]:lookup_old_element[0x4B] Api::OldWaysController#lookup_old_element -old_way[0x3A]:lookup_old_element_versions[0x4C] Api::OldWaysController#lookup_old_element_versions -old_way[0x3A]:show[0x02] OldWaysController#show -outboxe[0x3B]:show[0x02] Api::Messages::OutboxesController#show -outboxe[0x3B]:show[0x02] Messages::OutboxesController#show -password[0x3C]:create[0x04] PasswordsController#create -password[0x3C]:edit[0x05] PasswordsController#edit -password[0x3C]:new_form[0x03] PasswordsController#new -password[0x3C]:update[0x06] PasswordsController#update -pd_declaration[0x3D]:create[0x04] Accounts::PdDeclarationsController#create -pd_declaration[0x3D]:show[0x02] Accounts::PdDeclarationsController#show -permission[0x3E]:show[0x02] Api::PermissionsController#show -picture[0x3F]:show[0x02] Traces::PicturesController#show -preference[0x40]:show[0x02] Preferences::PreferencesController#show -preference[0x40]:update[0x06] Preferences::PreferencesController#update -profile_section[0x41]:show[0x02] Profiles::ProfileSectionsController#show -profile_section[0x41]:update[0x06] Profiles::ProfileSectionsController#update -querie[0x42]:fetch_text[0x38] Searches::QueriesController#fetch_text -querie[0x42]:fetch_xml[0x39] Searches::QueriesController#fetch_xml -read_mark[0x43]:create[0x04] Messages::ReadMarksController#create -read_mark[0x43]:delete[0x07] Messages::ReadMarksController#destroy -read_mark[0x43]:mark[0x51] Messages::ReadMarksController#mark -received_block[0x44]:delete[0x07] Users::ReceivedBlocksController#destroy -received_block[0x44]:edit[0x05] Users::ReceivedBlocksController#edit -received_block[0x44]:show[0x02] Users::ReceivedBlocksController#show -redaction[0x45]:create[0x04] Api::OldElements::RedactionsController#create -redaction[0x45]:create[0x04] RedactionsController#create -redaction[0x45]:delete[0x07] Api::OldElements::RedactionsController#destroy -redaction[0x45]:delete[0x07] RedactionsController#destroy -redaction[0x45]:edit[0x05] RedactionsController#edit -redaction[0x45]:list[0x01] RedactionsController#index -redaction[0x45]:lookup_old_element[0x4B] Api::OldNodes::RedactionsController#lookup_old_element -redaction[0x45]:lookup_old_element[0x4B] Api::OldRelations::RedactionsController#lookup_old_element -redaction[0x45]:lookup_old_element[0x4B] Api::OldWays::RedactionsController#lookup_old_element -redaction[0x45]:lookup_redaction[0x4D] RedactionsController#lookup_redaction -redaction[0x45]:new_form[0x03] RedactionsController#new -redaction[0x45]:show[0x02] RedactionsController#show -redaction[0x45]:update[0x06] RedactionsController#update -relation[0x46]:create[0x04] Api::RelationsController#create -relation[0x46]:delete[0x07] Api::RelationsController#destroy -relation[0x46]:list[0x01] Api::Nodes::RelationsController#index -relation[0x46]:list[0x01] Api::Relations::RelationsController#index -relation[0x46]:list[0x01] Api::RelationsController#index -relation[0x46]:list[0x01] Api::Ways::RelationsController#index -relation[0x46]:show[0x02] Api::RelationsController#show -relation[0x46]:show[0x02] RelationsController#show -relation[0x46]:update[0x06] Api::RelationsController#update -relation_member[0x47]:show[0x02] RelationMembersController#show -replie[0x48]:new_form[0x03] Messages::RepliesController#new -report[0x49]:create[0x04] ReportsController#create -report[0x49]:create_new_report_params[0x2C] ReportsController#create_new_report_params -report[0x49]:default_assigned_role[0x2F] ReportsController#default_assigned_role -report[0x49]:issue_params[0x47] ReportsController#issue_params -report[0x49]:new_form[0x03] ReportsController#new -report[0x49]:report_params[0x66] ReportsController#report_params -report[0x49]:required_new_report_params_present?[0x6E] ReportsController#required_new_report_params_present? -reporter[0x4A]:list[0x01] Issues::ReportersController#index -searche[0x4B]:dms_regexp[0x33] SearchesController#dms_regexp -searche[0x4B]:normalize_params[0x54] SearchesController#normalize_params -searche[0x4B]:show[0x02] SearchesController#show -searche[0x4B]:to_decdeg[0x7F] SearchesController#to_decdeg -session[0x4C]:create[0x04] SessionsController#create -session[0x4C]:delete[0x07] SessionsController#destroy -session[0x4C]:new_form[0x03] SessionsController#new -session[0x4C]:password_authentication[0x5B] SessionsController#password_authentication -share_pane[0x4D]:show[0x02] SharePanesController#show +feature_queries[0x18]:show[0x02] FeatureQueriesController#show +feeds[0x19]:show[0x02] ChangesetComments::FeedsController#show +feeds[0x19]:show[0x02] Traces::FeedsController#show +follows[0x1A]:create[0x04] FollowsController#create +follows[0x1A]:delete[0x07] FollowsController#destroy +follows[0x1A]:show[0x02] FollowsController#show +heatmaps[0x1B]:show[0x02] Users::HeatmapsController#show +heatmaps[0x1B]:update_profile[0x85] Profiles::HeatmapsController#update_profile +homes[0x1C]:show[0x02] Accounts::HomesController#show +icons[0x1D]:show[0x02] Traces::IconsController#show +images[0x1E]:update_profile[0x85] Profiles::ImagesController#update_profile +inboxes[0x1F]:show[0x02] Api::Messages::InboxesController#show +inboxes[0x1F]:show[0x02] Messages::InboxesController#show +issue_comments[0x20]:create[0x04] IssueCommentsController#create +issue_comments[0x20]:issue_comment_params[0x46] IssueCommentsController#issue_comment_params +issue_comments[0x20]:reassign_issue[0x61] IssueCommentsController#reassign_issue +issued_blocks[0x21]:show[0x02] Users::IssuedBlocksController#show +issues[0x22]:find_issue[0x3A] IssuesController#find_issue +issues[0x22]:ignore[0x42] IssuesController#ignore +issues[0x22]:list[0x01] IssuesController#index +issues[0x22]:reopen[0x64] IssuesController#reopen +issues[0x22]:resolve[0x6F] IssuesController#resolve +issues[0x22]:show[0x02] IssuesController#show +languages_panes[0x23]:show[0x02] LanguagesPanesController#show +latlon_queries[0x24]:create[0x04] Searches::LatlonQueriesController#create +layers_panes[0x25]:show[0x02] LayersPanesController#show +legend_panes[0x26]:show[0x02] LegendPanesController#show +links[0x27]:update_profile[0x85] Profiles::LinksController#update_profile +lists[0x28]:show[0x02] Users::ListsController#show +lists[0x28]:update[0x06] Users::ListsController#update +locations[0x29]:show[0x02] Profiles::LocationsController#show +locations[0x29]:update_profile[0x85] Profiles::LocationsController#update_profile +mailboxes[0x2A]:show_messages[0x7B] Api::Messages::MailboxesController#show_messages +maps[0x2B]:show[0x02] Api::MapsController#show +messages[0x2C]:create[0x04] Api::MessagesController#create +messages[0x2C]:create[0x04] MessagesController#create +messages[0x2C]:delete[0x07] Api::MessagesController#destroy +messages[0x2C]:delete[0x07] MessagesController#destroy +messages[0x2C]:message_params[0x52] MessagesController#message_params +messages[0x2C]:new_form[0x03] MessagesController#new +messages[0x2C]:show[0x02] Api::MessagesController#show +messages[0x2C]:show[0x02] MessagesController#show +messages[0x2C]:update[0x06] Api::MessagesController#update +muted_inboxes[0x2D]:show[0x02] Messages::MutedInboxesController#show +mutes[0x2E]:delete[0x07] Messages::MutesController#destroy +nodes[0x2F]:create[0x04] Api::NodesController#create +nodes[0x2F]:delete[0x07] Api::NodesController#destroy +nodes[0x2F]:list[0x01] Api::NodesController#index +nodes[0x2F]:show[0x02] Api::NodesController#show +nodes[0x2F]:show[0x02] NodesController#show +nodes[0x2F]:update[0x06] Api::NodesController#update +nominatim_queries[0x30]:create[0x04] Searches::NominatimQueriesController#create +nominatim_reverse_queries[0x31]:create[0x04] Searches::NominatimReverseQueriesController#create +note_subscriptions[0x32]:create[0x04] Api::NoteSubscriptionsController#create +note_subscriptions[0x32]:delete[0x07] Api::NoteSubscriptionsController#destroy +notes[0x33]:add_comment[0x09] Api::NotesController#add_comment +notes[0x33]:author_info[0x10] Api::NotesController#author_info +notes[0x33]:bbox_condition[0x14] Api::NotesController#bbox_condition +notes[0x33]:close[0x1B] Api::NotesController#close +notes[0x33]:closed_condition[0x1D] Api::NotesController#closed_condition +notes[0x33]:comment[0x1E] Api::NotesController#comment +notes[0x33]:create[0x04] Api::NotesController#create +notes[0x33]:delete[0x07] Api::NotesController#destroy +notes[0x33]:feed[0x37] Api::NotesController#feed +notes[0x33]:list[0x01] Api::NotesController#index +notes[0x33]:list[0x01] NotesController#index +notes[0x33]:new_form[0x03] NotesController#new +notes[0x33]:reopen[0x64] Api::NotesController#reopen +notes[0x33]:search[0x75] Api::NotesController#search +notes[0x33]:show[0x02] Api::NotesController#show +notes[0x33]:show[0x02] NotesController#show +notification_preferences[0x34]:update_preferences[0x84] Preferences::NotificationPreferencesController#update_preferences +oauth2_applications[0x35]:application_params[0x0D] Oauth2ApplicationsController#application_params +oauth2_applications[0x35]:list[0x01] Oauth2ApplicationsController#index +oauth2_applications[0x35]:set_application[0x76] Oauth2ApplicationsController#set_application +old_elements[0x36]:list[0x01] Api::OldElementsController#index +old_elements[0x36]:require_moderator_for_unredacted_history[0x68] OldElementsController#require_moderator_for_unredacted_history +old_elements[0x36]:show[0x02] Api::OldElementsController#show +old_elements[0x36]:show_redactions?[0x7C] Api::OldElementsController#show_redactions? +old_nodes[0x37]:list[0x01] OldNodesController#index +old_nodes[0x37]:lookup_old_element[0x4B] Api::OldNodesController#lookup_old_element +old_nodes[0x37]:lookup_old_element_versions[0x4C] Api::OldNodesController#lookup_old_element_versions +old_nodes[0x37]:show[0x02] OldNodesController#show +old_relation_members[0x38]:show[0x02] OldRelationMembersController#show +old_relations[0x39]:list[0x01] OldRelationsController#index +old_relations[0x39]:lookup_old_element[0x4B] Api::OldRelationsController#lookup_old_element +old_relations[0x39]:lookup_old_element_versions[0x4C] Api::OldRelationsController#lookup_old_element_versions +old_relations[0x39]:show[0x02] OldRelationsController#show +old_ways[0x3A]:list[0x01] OldWaysController#index +old_ways[0x3A]:lookup_old_element[0x4B] Api::OldWaysController#lookup_old_element +old_ways[0x3A]:lookup_old_element_versions[0x4C] Api::OldWaysController#lookup_old_element_versions +old_ways[0x3A]:show[0x02] OldWaysController#show +outboxes[0x3B]:show[0x02] Api::Messages::OutboxesController#show +outboxes[0x3B]:show[0x02] Messages::OutboxesController#show +passwords[0x3C]:create[0x04] PasswordsController#create +passwords[0x3C]:edit[0x05] PasswordsController#edit +passwords[0x3C]:new_form[0x03] PasswordsController#new +passwords[0x3C]:update[0x06] PasswordsController#update +pd_declarations[0x3D]:create[0x04] Accounts::PdDeclarationsController#create +pd_declarations[0x3D]:show[0x02] Accounts::PdDeclarationsController#show +permissions[0x3E]:show[0x02] Api::PermissionsController#show +pictures[0x3F]:show[0x02] Traces::PicturesController#show +preferences[0x40]:show[0x02] Preferences::PreferencesController#show +preferences[0x40]:update[0x06] Preferences::PreferencesController#update +profile_sections[0x41]:show[0x02] Profiles::ProfileSectionsController#show +profile_sections[0x41]:update[0x06] Profiles::ProfileSectionsController#update +queries[0x42]:fetch_text[0x38] Searches::QueriesController#fetch_text +queries[0x42]:fetch_xml[0x39] Searches::QueriesController#fetch_xml +read_marks[0x43]:create[0x04] Messages::ReadMarksController#create +read_marks[0x43]:delete[0x07] Messages::ReadMarksController#destroy +read_marks[0x43]:mark[0x51] Messages::ReadMarksController#mark +received_blocks[0x44]:delete[0x07] Users::ReceivedBlocksController#destroy +received_blocks[0x44]:edit[0x05] Users::ReceivedBlocksController#edit +received_blocks[0x44]:show[0x02] Users::ReceivedBlocksController#show +redactions[0x45]:create[0x04] Api::OldElements::RedactionsController#create +redactions[0x45]:create[0x04] RedactionsController#create +redactions[0x45]:delete[0x07] Api::OldElements::RedactionsController#destroy +redactions[0x45]:delete[0x07] RedactionsController#destroy +redactions[0x45]:edit[0x05] RedactionsController#edit +redactions[0x45]:list[0x01] RedactionsController#index +redactions[0x45]:lookup_old_element[0x4B] Api::OldNodes::RedactionsController#lookup_old_element +redactions[0x45]:lookup_old_element[0x4B] Api::OldRelations::RedactionsController#lookup_old_element +redactions[0x45]:lookup_old_element[0x4B] Api::OldWays::RedactionsController#lookup_old_element +redactions[0x45]:lookup_redaction[0x4D] RedactionsController#lookup_redaction +redactions[0x45]:new_form[0x03] RedactionsController#new +redactions[0x45]:show[0x02] RedactionsController#show +redactions[0x45]:update[0x06] RedactionsController#update +relation_members[0x46]:show[0x02] RelationMembersController#show +relations[0x47]:create[0x04] Api::RelationsController#create +relations[0x47]:delete[0x07] Api::RelationsController#destroy +relations[0x47]:list[0x01] Api::Nodes::RelationsController#index +relations[0x47]:list[0x01] Api::Relations::RelationsController#index +relations[0x47]:list[0x01] Api::RelationsController#index +relations[0x47]:list[0x01] Api::Ways::RelationsController#index +relations[0x47]:show[0x02] Api::RelationsController#show +relations[0x47]:show[0x02] RelationsController#show +relations[0x47]:update[0x06] Api::RelationsController#update +replies[0x48]:new_form[0x03] Messages::RepliesController#new +reporters[0x49]:list[0x01] Issues::ReportersController#index +reports[0x4A]:create[0x04] ReportsController#create +reports[0x4A]:create_new_report_params[0x2C] ReportsController#create_new_report_params +reports[0x4A]:default_assigned_role[0x2F] ReportsController#default_assigned_role +reports[0x4A]:issue_params[0x47] ReportsController#issue_params +reports[0x4A]:new_form[0x03] ReportsController#new +reports[0x4A]:report_params[0x66] ReportsController#report_params +reports[0x4A]:required_new_report_params_present?[0x6E] ReportsController#required_new_report_params_present? +searches[0x4B]:dms_regexp[0x33] SearchesController#dms_regexp +searches[0x4B]:normalize_params[0x54] SearchesController#normalize_params +searches[0x4B]:show[0x02] SearchesController#show +searches[0x4B]:to_decdeg[0x7F] SearchesController#to_decdeg +sessions[0x4C]:create[0x04] SessionsController#create +sessions[0x4C]:delete[0x07] SessionsController#destroy +sessions[0x4C]:new_form[0x03] SessionsController#new +sessions[0x4C]:password_authentication[0x5B] SessionsController#password_authentication +share_panes[0x4D]:show[0x02] SharePanesController#show site[0x4E]:about[0x08] SiteController#about site[0x4E]:communities[0x20] SiteController#communities site[0x4E]:copyright[0x2B] SiteController#copyright @@ -281,80 +281,80 @@ site[0x4E]:preview[0x5F] SiteController#preview site[0x4E]:redirect_browse_params[0x62] SiteController#redirect_browse_params site[0x4E]:redirect_map_params[0x63] SiteController#redirect_map_params site[0x4E]:welcome[0x8A] SiteController#welcome -statuse[0x4F]:lookup_user_by_name[0x4F] Users::StatusesController#lookup_user_by_name -statuse[0x4F]:update[0x06] Users::StatusesController#update -term[0x50]:show[0x02] Accounts::TermsController#show -term[0x50]:update[0x06] Accounts::TermsController#update -trace[0x51]:create[0x04] Api::TracesController#create -trace[0x51]:create[0x04] TracesController#create -trace[0x51]:default_visibility[0x30] TracesController#default_visibility -trace[0x51]:delete[0x07] Api::TracesController#destroy -trace[0x51]:delete[0x07] TracesController#destroy -trace[0x51]:do_create[0x34] Api::TracesController#do_create -trace[0x51]:do_create[0x34] TracesController#do_create -trace[0x51]:edit[0x05] TracesController#edit -trace[0x51]:list[0x01] Api::Users::TracesController#index -trace[0x51]:list[0x01] TracesController#index -trace[0x51]:mine[0x53] TracesController#mine -trace[0x51]:new_form[0x03] TracesController#new -trace[0x51]:offline_error[0x58] Api::TracesController#offline_error -trace[0x51]:offline_redirect[0x59] TracesController#offline_redirect -trace[0x51]:offline_warning[0x5A] TracesController#offline_warning -trace[0x51]:show[0x02] Api::TracesController#show -trace[0x51]:show[0x02] TracesController#show -trace[0x51]:trace_params[0x80] TracesController#trace_params -trace[0x51]:update[0x06] Api::TracesController#update -trace[0x51]:update[0x06] TracesController#update -tracepoint[0x52]:list[0x01] Api::TracepointsController#index -upload[0x53]:create[0x04] Api::Changesets::UploadsController#create -user[0x54]:auth_failure[0x0E] UsersController#auth_failure -user[0x54]:auth_success[0x0F] UsersController#auth_success -user[0x54]:check_signup_allowed?[0x1A] UsersController#check_signup_allowed? -user[0x54]:create[0x04] UsersController#create -user[0x54]:details[0x32] Api::UsersController#details -user[0x54]:go_public[0x3C] UsersController#go_public -user[0x54]:list[0x01] Api::UsersController#index -user[0x54]:new_form[0x03] UsersController#new -user[0x54]:save_new_user[0x73] UsersController#save_new_user -user[0x54]:show[0x02] Api::UsersController#show -user[0x54]:show[0x02] UsersController#show -user[0x54]:user_params[0x87] UsersController#user_params -user[0x54]:valid_turnstile_response?[0x88] UsersController#valid_turnstile_response? -user[0x54]:welcome_options[0x8B] UsersController#welcome_options -user_block[0x55]:create[0x04] Api::UserBlocksController#create -user_block[0x55]:create[0x04] UserBlocksController#create -user_block[0x55]:edit[0x05] UserBlocksController#edit -user_block[0x55]:list[0x01] UserBlocksController#index -user_block[0x55]:lookup_user_block[0x4E] UserBlocksController#lookup_user_block -user_block[0x55]:new_form[0x03] UserBlocksController#new -user_block[0x55]:require_valid_params[0x6C] UserBlocksController#require_valid_params -user_block[0x55]:show[0x02] Api::UserBlocksController#show -user_block[0x55]:show[0x02] UserBlocksController#show -user_block[0x55]:update[0x06] UserBlocksController#update -user_mute[0x56]:create[0x04] UserMutesController#create -user_mute[0x56]:delete[0x07] UserMutesController#destroy -user_mute[0x56]:list[0x01] UserMutesController#index -user_preference[0x57]:delete[0x07] Api::UserPreferencesController#destroy -user_preference[0x57]:list[0x01] Api::UserPreferencesController#index -user_preference[0x57]:show[0x02] Api::UserPreferencesController#show -user_preference[0x57]:update[0x06] Api::UserPreferencesController#update -user_preference[0x57]:update_all[0x83] Api::UserPreferencesController#update_all -user_role[0x58]:create[0x04] UserRolesController#create -user_role[0x58]:delete[0x07] UserRolesController#destroy -user_role[0x58]:in_role[0x43] UserRolesController#in_role -user_role[0x58]:not_in_role[0x56] UserRolesController#not_in_role -user_role[0x58]:require_valid_role[0x6D] UserRolesController#require_valid_role -version[0x59]:show[0x02] Api::VersionsController#show -visibilitie[0x5A]:create[0x04] Api::ChangesetComments::VisibilitiesController#create -visibilitie[0x5A]:delete[0x07] Api::ChangesetComments::VisibilitiesController#destroy -way[0x5B]:create[0x04] Api::WaysController#create -way[0x5B]:delete[0x07] Api::WaysController#destroy -way[0x5B]:list[0x01] Api::Nodes::WaysController#index -way[0x5B]:list[0x01] Api::WaysController#index -way[0x5B]:show[0x02] Api::WaysController#show -way[0x5B]:show[0x02] WaysController#show -way[0x5B]:update[0x06] Api::WaysController#update -webgl_error_pane[0x5C]:show[0x02] WebglErrorPanesController#show +statuses[0x4F]:lookup_user_by_name[0x4F] Users::StatusesController#lookup_user_by_name +statuses[0x4F]:update[0x06] Users::StatusesController#update +terms[0x50]:show[0x02] Accounts::TermsController#show +terms[0x50]:update[0x06] Accounts::TermsController#update +tracepoints[0x51]:list[0x01] Api::TracepointsController#index +traces[0x52]:create[0x04] Api::TracesController#create +traces[0x52]:create[0x04] TracesController#create +traces[0x52]:default_visibility[0x30] TracesController#default_visibility +traces[0x52]:delete[0x07] Api::TracesController#destroy +traces[0x52]:delete[0x07] TracesController#destroy +traces[0x52]:do_create[0x34] Api::TracesController#do_create +traces[0x52]:do_create[0x34] TracesController#do_create +traces[0x52]:edit[0x05] TracesController#edit +traces[0x52]:list[0x01] Api::Users::TracesController#index +traces[0x52]:list[0x01] TracesController#index +traces[0x52]:mine[0x53] TracesController#mine +traces[0x52]:new_form[0x03] TracesController#new +traces[0x52]:offline_error[0x58] Api::TracesController#offline_error +traces[0x52]:offline_redirect[0x59] TracesController#offline_redirect +traces[0x52]:offline_warning[0x5A] TracesController#offline_warning +traces[0x52]:show[0x02] Api::TracesController#show +traces[0x52]:show[0x02] TracesController#show +traces[0x52]:trace_params[0x80] TracesController#trace_params +traces[0x52]:update[0x06] Api::TracesController#update +traces[0x52]:update[0x06] TracesController#update +uploads[0x53]:create[0x04] Api::Changesets::UploadsController#create +user_blocks[0x54]:create[0x04] Api::UserBlocksController#create +user_blocks[0x54]:create[0x04] UserBlocksController#create +user_blocks[0x54]:edit[0x05] UserBlocksController#edit +user_blocks[0x54]:list[0x01] UserBlocksController#index +user_blocks[0x54]:lookup_user_block[0x4E] UserBlocksController#lookup_user_block +user_blocks[0x54]:new_form[0x03] UserBlocksController#new +user_blocks[0x54]:require_valid_params[0x6C] UserBlocksController#require_valid_params +user_blocks[0x54]:show[0x02] Api::UserBlocksController#show +user_blocks[0x54]:show[0x02] UserBlocksController#show +user_blocks[0x54]:update[0x06] UserBlocksController#update +user_mutes[0x55]:create[0x04] UserMutesController#create +user_mutes[0x55]:delete[0x07] UserMutesController#destroy +user_mutes[0x55]:list[0x01] UserMutesController#index +user_preferences[0x56]:delete[0x07] Api::UserPreferencesController#destroy +user_preferences[0x56]:list[0x01] Api::UserPreferencesController#index +user_preferences[0x56]:show[0x02] Api::UserPreferencesController#show +user_preferences[0x56]:update[0x06] Api::UserPreferencesController#update +user_preferences[0x56]:update_all[0x83] Api::UserPreferencesController#update_all +user_roles[0x57]:create[0x04] UserRolesController#create +user_roles[0x57]:delete[0x07] UserRolesController#destroy +user_roles[0x57]:in_role[0x43] UserRolesController#in_role +user_roles[0x57]:not_in_role[0x56] UserRolesController#not_in_role +user_roles[0x57]:require_valid_role[0x6D] UserRolesController#require_valid_role +users[0x58]:auth_failure[0x0E] UsersController#auth_failure +users[0x58]:auth_success[0x0F] UsersController#auth_success +users[0x58]:check_signup_allowed?[0x1A] UsersController#check_signup_allowed? +users[0x58]:create[0x04] UsersController#create +users[0x58]:details[0x32] Api::UsersController#details +users[0x58]:go_public[0x3C] UsersController#go_public +users[0x58]:list[0x01] Api::UsersController#index +users[0x58]:new_form[0x03] UsersController#new +users[0x58]:save_new_user[0x73] UsersController#save_new_user +users[0x58]:show[0x02] Api::UsersController#show +users[0x58]:show[0x02] UsersController#show +users[0x58]:user_params[0x87] UsersController#user_params +users[0x58]:valid_turnstile_response?[0x88] UsersController#valid_turnstile_response? +users[0x58]:welcome_options[0x8B] UsersController#welcome_options +versions[0x59]:show[0x02] Api::VersionsController#show +visibilities[0x5A]:create[0x04] Api::ChangesetComments::VisibilitiesController#create +visibilities[0x5A]:delete[0x07] Api::ChangesetComments::VisibilitiesController#destroy +ways[0x5B]:create[0x04] Api::WaysController#create +ways[0x5B]:delete[0x07] Api::WaysController#destroy +ways[0x5B]:list[0x01] Api::Nodes::WaysController#index +ways[0x5B]:list[0x01] Api::WaysController#index +ways[0x5B]:show[0x02] Api::WaysController#show +ways[0x5B]:show[0x02] WaysController#show +ways[0x5B]:update[0x06] Api::WaysController#update +webgl_error_panes[0x5C]:show[0x02] WebglErrorPanesController#show # is_a axis (140 archetypes): list=0x01 show=0x02 new_form=0x03 create=0x04 edit=0x05 update=0x06 delete=0x07 about=0x08 add_comment=0x09 api_call_handle_error=0x0A api_call_timeout=0x0B api_status=0x0C application_params=0x0D auth_failure=0x0E auth_success=0x0F author_info=0x10 authorize=0x11 authorize_web=0x12 bad_request=0x13 bbox_condition=0x14 check_api_readable=0x15 check_api_writable=0x16 check_database_readable=0x17 check_database_writable=0x18 check_rate_limit=0x19 check_signup_allowed?=0x1A close=0x1B close_body=0x1C closed_condition=0x1D comment=0x1E comment_params=0x1F communities=0x20 conditions_bbox=0x21 conditions_closed=0x22 conditions_ids=0x23 conditions_nonempty=0x24 conditions_open=0x25 conditions_time=0x26 conditions_user=0x27 confirm=0x28 confirm_email=0x29 confirm_resend=0x2A copyright=0x2B create_new_report_params=0x2C current_ability=0x2D database_status=0x2E default_assigned_role=0x2F default_visibility=0x30 deny_access=0x31 details=0x32 dms_regexp=0x33 do_create=0x34 entry_params=0x35 export=0x36 feed=0x37 fetch_text=0x38 fetch_xml=0x39 find_issue=0x3A forbidden=0x3B go_public=0x3C gpx_status=0x3D gravatar_status_message=0x3E help=0x3F hide=0x40 id=0x41 ignore=0x42 in_role=0x43 internal_server_error=0x44 invalid_parameter=0x45 issue_comment_params=0x46 issue_params=0x47 load_nodes=0x48 load_relations=0x49 load_ways=0x4A lookup_old_element=0x4B lookup_old_element_versions=0x4C lookup_redaction=0x4D lookup_user_block=0x4E lookup_user_by_name=0x4F map_layout=0x50 mark=0x51 message_params=0x52 mine=0x53 normalize_params=0x54 not_found=0x55 not_in_role=0x56 offline=0x57 offline_error=0x58 offline_redirect=0x59 offline_warning=0x5A password_authentication=0x5B permalink=0x5C preferred_editor=0x5D preferred_languages=0x5E preview=0x5F rate_limit_exceeded?=0x60 reassign_issue=0x61 redirect_browse_params=0x62 redirect_map_params=0x63 reopen=0x64 report_error=0x65 report_params=0x66 require_cookies=0x67 require_moderator_for_unredacted_history=0x68 require_oauth=0x69 require_public_data=0x6A require_user=0x6B require_valid_params=0x6C require_valid_role=0x6D required_new_report_params_present?=0x6E resolve=0x6F respond_to_timeout=0x70 rss=0x71 safe_referer=0x72 save_new_user=0x73 scope_enabled?=0x74 search=0x75 set_application=0x76 set_locale=0x77 set_map_location=0x78 set_request_formats=0x79 setup_user_auth=0x7A show_messages=0x7B show_redactions?=0x7C site_layout=0x7D subscribe=0x7E to_decdeg=0x7F trace_params=0x80 unhide=0x81 unsubscribe=0x82 update_all=0x83 update_preferences=0x84 update_profile=0x85 update_totp=0x86 user_params=0x87 valid_turnstile_response?=0x88 web_timeout=0x89 welcome=0x8A welcome_options=0x8B wrap_lon=0x8C -# part_of axis (92 containers): account=0x01 active_list=0x02 advanced_preference=0x03 api=0x04 application=0x05 basic_preference=0x06 capabilitie=0x07 changeset=0x08 changeset_comment=0x09 changeset_subscription=0x0A close=0x0B companie=0x0C confirmation=0x0D dashboard=0x0E data=0x0F deletion=0x10 description=0x11 diary_comment=0x12 diary_entrie=0x13 direction=0x14 download=0x15 error=0x16 export=0x17 feature_querie=0x18 feed=0x19 follow=0x1A heatmap=0x1B home=0x1C icon=0x1D image=0x1E inboxe=0x1F issue=0x20 issue_comment=0x21 issued_block=0x22 languages_pane=0x23 latlon_querie=0x24 layers_pane=0x25 legend_pane=0x26 link=0x27 list=0x28 location=0x29 mailboxe=0x2A map=0x2B message=0x2C mute=0x2D muted_inboxe=0x2E node=0x2F nominatim_querie=0x30 nominatim_reverse_querie=0x31 note=0x32 note_subscription=0x33 notification_preference=0x34 oauth2_application=0x35 old_element=0x36 old_node=0x37 old_relation=0x38 old_relation_member=0x39 old_way=0x3A outboxe=0x3B password=0x3C pd_declaration=0x3D permission=0x3E picture=0x3F preference=0x40 profile_section=0x41 querie=0x42 read_mark=0x43 received_block=0x44 redaction=0x45 relation=0x46 relation_member=0x47 replie=0x48 report=0x49 reporter=0x4A searche=0x4B session=0x4C share_pane=0x4D site=0x4E statuse=0x4F term=0x50 trace=0x51 tracepoint=0x52 upload=0x53 user=0x54 user_block=0x55 user_mute=0x56 user_preference=0x57 user_role=0x58 version=0x59 visibilitie=0x5A way=0x5B webgl_error_pane=0x5C +# part_of axis (92 containers): accounts=0x01 active_lists=0x02 advanced_preferences=0x03 api=0x04 application=0x05 basic_preferences=0x06 capabilities=0x07 changeset_comments=0x08 changeset_subscriptions=0x09 changesets=0x0A closes=0x0B companies=0x0C confirmations=0x0D dashboards=0x0E data=0x0F deletions=0x10 descriptions=0x11 diary_comments=0x12 diary_entries=0x13 directions=0x14 downloads=0x15 errors=0x16 export=0x17 feature_queries=0x18 feeds=0x19 follows=0x1A heatmaps=0x1B homes=0x1C icons=0x1D images=0x1E inboxes=0x1F issue_comments=0x20 issued_blocks=0x21 issues=0x22 languages_panes=0x23 latlon_queries=0x24 layers_panes=0x25 legend_panes=0x26 links=0x27 lists=0x28 locations=0x29 mailboxes=0x2A maps=0x2B messages=0x2C muted_inboxes=0x2D mutes=0x2E nodes=0x2F nominatim_queries=0x30 nominatim_reverse_queries=0x31 note_subscriptions=0x32 notes=0x33 notification_preferences=0x34 oauth2_applications=0x35 old_elements=0x36 old_nodes=0x37 old_relation_members=0x38 old_relations=0x39 old_ways=0x3A outboxes=0x3B passwords=0x3C pd_declarations=0x3D permissions=0x3E pictures=0x3F preferences=0x40 profile_sections=0x41 queries=0x42 read_marks=0x43 received_blocks=0x44 redactions=0x45 relation_members=0x46 relations=0x47 replies=0x48 reporters=0x49 reports=0x4A searches=0x4B sessions=0x4C share_panes=0x4D site=0x4E statuses=0x4F terms=0x50 tracepoints=0x51 traces=0x52 uploads=0x53 user_blocks=0x54 user_mutes=0x55 user_preferences=0x56 user_roles=0x57 users=0x58 versions=0x59 visibilities=0x5A ways=0x5B webgl_error_panes=0x5C diff --git a/crates/ogar-from-rails/examples/harvest_osm.rs b/crates/ogar-from-rails/examples/harvest_osm.rs index a2a26ae..b4b1449 100644 --- a/crates/ogar-from-rails/examples/harvest_osm.rs +++ b/crates/ogar-from-rails/examples/harvest_osm.rs @@ -31,7 +31,10 @@ fn main() { } // --ir: full structured IR (relational graph), stable text form. - println!("# OSM Rails → OGAR IR (namespace=osm) — {} classes", classes.len()); + println!( + "# OSM Rails → OGAR IR (namespace=osm) — {} classes", + classes.len() + ); for c in &classes { println!("\n## {}", c.name); if let Some(p) = &c.parent { diff --git a/crates/ogar-from-rails/src/lib.rs b/crates/ogar-from-rails/src/lib.rs index a555874..b932521 100644 --- a/crates/ogar-from-rails/src/lib.rs +++ b/crates/ogar-from-rails/src/lib.rs @@ -109,8 +109,8 @@ pub fn extract_app(source_tree: &Path) -> Vec { /// Harvest the **DO-arm**: walk `/app/controllers`, lift each /// controller's public actions to `ActionDef`s via [`ogar_from_ruff::lift_actions`], -/// keyed by the resource model name the controller acts on -/// (`Api::NodesController` → `Node`). Controllers that don't map to a resource +/// keyed by the controller's own (namespace-stripped) name +/// (`Api::NodesController` → `Nodes`). Controllers that don't map to a resource /// (dashboards, errors, sessions, …) are dropped. /// /// This is the MVC other half — OGAR is *Open Graph of Active Record*, and @@ -151,16 +151,18 @@ pub fn extract_actions(source_tree: &Path, curator: &str) -> Vec<(String, Vec Option { let base = controller.rsplit("::").next()?; let stem = base.strip_suffix("Controller")?; if stem.is_empty() { return None; } - Some(stem.strip_suffix('s').unwrap_or(stem).to_string()) + Some(stem.to_string()) } // ── The action rail: (part_of : is_a) — the V3 castable action shape ── @@ -169,7 +171,7 @@ fn controller_to_model(controller: &str) -> Option { // cannot cast between them or compose them. The V3 rail addresses an action as // a `(part_of : is_a)` pair — the SAME `u8:u8` HHTL tile shape as the GUID // tiers — so you CAST by fixing one axis and walking the other: -// fix is_a=show, walk part_of → `node:show`, `way:show`, `overview:show` +// fix is_a=show, walk part_of → `nodes:show`, `ways:show`, `changesets:show` // fix part_of=map, walk is_a → `map:render`, `map:show`, `map:export` // `part_of` is the controller container (INCLUDING view controllers like // `map` / `overview` that have no resource model); `is_a` is the action @@ -177,8 +179,9 @@ fn controller_to_model(controller: &str) -> Option { /// Canonical archetypes for the `is_a` axis — CRUD first (stable low ids), /// then any custom verb (`render`, `export`, `download`, …) as its own. -const CRUD_ARCHETYPES: &[&str] = - &["list", "show", "new_form", "create", "edit", "update", "delete"]; +const CRUD_ARCHETYPES: &[&str] = &[ + "list", "show", "new_form", "create", "edit", "update", "delete", +]; /// The `is_a` archetype for a Rails action verb (`index → list`, /// `destroy → delete`; `new → new_form` so it never collides with the struct's @@ -193,20 +196,20 @@ fn is_a_archetype(verb: &str) -> String { .to_string() } -/// The `part_of` container for a controller (`Api::NodesController` → `node`, -/// `MapController` → `map`). Strips namespace + `Controller`, snake+singular. -/// Unlike [`controller_to_model`] this keeps view containers (`map`, -/// `overview`) that have no resource model. +/// The `part_of` container for a controller — the controller's own name, +/// snake-cased **verbatim** (`Api::NodesController` → `nodes`, `MapController` +/// → `map`, `SearchesController` → `searches`). No singularisation, no invented +/// namespace: the module mirrors the source controller 1:1 and is reversible. +/// Keeps view containers (`map`, `overview`) that have no resource model. fn container_of(controller: &str) -> Option { let base = controller.rsplit("::").next()?; let stem = base.strip_suffix("Controller")?; if stem.is_empty() { return None; } - let singular = stem.strip_suffix('s').unwrap_or(stem); let mut out = String::new(); let mut prev_ln = false; - for c in singular.chars() { + for c in stem.chars() { if c.is_ascii_uppercase() && prev_ln { out.push('_'); } @@ -218,7 +221,10 @@ fn container_of(controller: &str) -> Option { /// Assign u8 ids: `canonical` names first (from `0x01`, in given order), then /// the remaining distinct names in sorted order. -fn codebook(names: &std::collections::BTreeSet, canonical: &[&str]) -> BTreeMap { +fn codebook( + names: &std::collections::BTreeSet, + canonical: &[&str], +) -> BTreeMap { let mut map = BTreeMap::new(); let mut next: u8 = 1; for c in canonical { @@ -294,6 +300,32 @@ mod tests { use super::*; use std::path::PathBuf; + /// The container is the controller's own name, snake-cased verbatim — no + /// singularisation (English plurals aren't invertible by heuristic; the + /// semantics live in the classid, not a prettified string). + #[test] + fn container_of_mirrors_the_controller_verbatim() { + assert_eq!( + container_of("Api::NodesController").as_deref(), + Some("nodes") + ); + assert_eq!( + container_of("SearchesController").as_deref(), + Some("searches") + ); + assert_eq!( + container_of("Api::CapabilitiesController").as_deref(), + Some("capabilities") + ); + assert_eq!(container_of("MapController").as_deref(), Some("map")); + assert_eq!( + container_of("ChangesetCommentsController").as_deref(), + Some("changeset_comments") + ); + // not a controller → None + assert_eq!(container_of("ApplicationRecord"), None); + } + /// Empty / nonexistent source tree → empty Vec, never panics. The /// `ruff_ruby_spo` contract is "no app/models → empty graph"; this /// test pins that our lift preserves the no-panic behaviour. @@ -374,7 +406,10 @@ mod tests { let openproject = extract_with(&op_path, "openproject"); let issue = redmine.iter().find(|c| c.name == "Issue").unwrap(); - let wp = openproject.iter().find(|c| c.name == "WorkPackage").unwrap(); + let wp = openproject + .iter() + .find(|c| c.name == "WorkPackage") + .unwrap(); // Distinct curators ... assert_eq!(issue.source_curator.as_deref(), Some("redmine")); @@ -512,7 +547,10 @@ mod tests { // detected deterministically from class names alone. This is the // load-bearing convergence assertion — it holds *regardless* of // per-curator surface-extraction depth. - assert_eq!(issue.canonical_concept.as_deref(), Some("project_work_item")); + assert_eq!( + issue.canonical_concept.as_deref(), + Some("project_work_item") + ); assert_eq!( work_package.canonical_concept.as_deref(), Some("project_work_item"), @@ -645,8 +683,15 @@ mod tests { // The full canonical surface: every role on // [`ogar_vocab::project_work_item`]. let expected: std::collections::HashSet<&'static str> = [ - "project", "status", "type", "priority", "author", "assignee", - "journals", "relations", "time_entries", + "project", + "status", + "type", + "priority", + "author", + "assignee", + "journals", + "relations", + "time_entries", ] .into_iter() .collect(); @@ -725,7 +770,9 @@ mod tests { // producer does not yet decode either, so the v1 surface stays // at 3 roles. A follow-up mixin-decode adds it. let expected: std::collections::HashSet<&'static str> = - ["work_items", "time_entries", "members"].into_iter().collect(); + ["work_items", "time_entries", "members"] + .into_iter() + .collect(); assert_eq!( r_roles, expected, "Redmine Project must cover the canonical 3-role surface", @@ -780,7 +827,10 @@ mod tests { // All four classes — Redmine User + Principal, OP User + Principal // — share the canonical concept and the binary codebook id. let expected_id = ogar_vocab::canonical_concept_id("project_actor"); - assert!(expected_id.is_some(), "project_actor must be in the codebook"); + assert!( + expected_id.is_some(), + "project_actor must be in the codebook" + ); for (curator, classes) in [("Redmine", &redmine), ("OpenProject", &openproject)] { for class_name in ["User", "Principal"] { @@ -943,16 +993,24 @@ mod tests { assert!(rel_id.is_some() && cs_id.is_some() && w_id.is_some()); for (curator, classes, table) in [ - ("Redmine", &redmine, &[ - ("IssueRelation", "project_relation", rel_id), - ("Changeset", "project_changeset", cs_id), - ("Watcher", "project_watcher", w_id), - ][..]), - ("OpenProject", &openproject, &[ - ("Relation", "project_relation", rel_id), - ("Changeset", "project_changeset", cs_id), - ("Watcher", "project_watcher", w_id), - ][..]), + ( + "Redmine", + &redmine, + &[ + ("IssueRelation", "project_relation", rel_id), + ("Changeset", "project_changeset", cs_id), + ("Watcher", "project_watcher", w_id), + ][..], + ), + ( + "OpenProject", + &openproject, + &[ + ("Relation", "project_relation", rel_id), + ("Changeset", "project_changeset", cs_id), + ("Watcher", "project_watcher", w_id), + ][..], + ), ] { for (class_name, concept, expected_id) in table { let c = classes @@ -1134,7 +1192,11 @@ mod tests { .iter() .find(|c| c.name == class_name) .unwrap_or_else(|| panic!("{curator} ships a {class_name} model")); - assert_eq!(c.canonical_concept.as_deref(), Some(concept), "{curator} {class_name}"); + assert_eq!( + c.canonical_concept.as_deref(), + Some(concept), + "{curator} {class_name}" + ); assert_eq!(c.source_domain.as_deref(), Some("project")); assert_eq!(c.canonical_id(), ogar_vocab::canonical_concept_id(concept)); } diff --git a/crates/ogar-render-askama/examples/render_osm.rs b/crates/ogar-render-askama/examples/render_osm.rs index 2fd8390..a6314bb 100644 --- a/crates/ogar-render-askama/examples/render_osm.rs +++ b/crates/ogar-render-askama/examples/render_osm.rs @@ -247,15 +247,17 @@ fn main() { ); } - // ── DO-arm module tree: osm::::(input) → generated/actions.rs. - // part_of = container module, is_a = action fn — standalone free functions, - // never methods on the data struct. e.g. `osm::map::render(input)`. ── - // The (part_of : is_a) tile is the CANONICAL rail address, so multiple - // source controllers that map to the same tile (e.g. `Api::NodesController#show` - // and `NodesController#show` → `node:show`) are ONE castable action by design - // — the api-vs-web surface is the classid's custom-low half, not a new tile. - // Accumulate ALL sources per tile so provenance is never dropped from the docs - // (Bugbot/codex #152 review: the earlier `or_insert` silently lost the 2nd+). + // ── DO arm: a faithful `controllers` module tree → generated/controllers.rs. + // Each module MIRRORS a source controller 1:1 by its own (snake, verbatim, + // NOT singularised) name — `NodesController → nodes`, `MapController → map`. + // Functions are the `is_a` actions; standalone, never methods on the record. + // osm-domain re-exports (`pub use controllers::*`) for the ergonomic surface, + // so `osm_domain::controllers::nodes::show` and re-exported `nodes::show` + // both resolve. The (part_of : is_a) tile stays the CANONICAL rail address, + // so multiple source controllers on the same tile (`Api::NodesController#show` + // + `NodesController#show` → `nodes:show`) are ONE castable action by design — + // the api-vs-web surface is the classid custom-low half, not a new tile. All + // sources are cited so provenance is never lost (Bugbot/codex #152). let mut tree: std::collections::BTreeMap< String, std::collections::BTreeMap>, @@ -268,9 +270,11 @@ fn main() { .push((r.controller.clone(), r.action.clone())); } let mut acts = String::from( - "//! @generated DO-arm — OSM controller actions as `osm::::(input)`.\n\ - //! part_of = container module, is_a = action fn (standalone, not methods on the\n\ - //! data struct, per OGAR's ActionDef rule). Call: `osm::map::render(Input::default())`.\n\n\ + "//! @generated DO arm — a faithful `controllers` mirror. Each module is a\n\ + //! source controller by its own verbatim (snake) name; each fn is an `is_a`\n\ + //! action (standalone, not methods on the record). osm-domain re-exports this\n\ + //! module (`pub use controllers::*`), so `controllers::nodes::show(input)` and\n\ + //! the re-exported `nodes::show(input)` both resolve. No singularisation.\n\n\ #![allow(clippy::all, dead_code, unused_variables)]\n\n\ /// DO-arm action input — the Rails `params` / request. Typed-field harvest is a\n\ /// follow-up (ruff `Function` carries reads/writes, not param types yet).\n\ @@ -313,11 +317,11 @@ fn main() { } acts.push_str("}\n\n"); } - fs::write(out.join("actions.rs"), acts).unwrap(); + fs::write(out.join("controllers.rs"), acts).unwrap(); println!( - "rendered {} data structs (THINK) + DO arm osm:::: = {fn_count} fns \ - across {} containers [{} part_of x {} is_a rail, {} tiles]; {edges} SPO edges -> {}", + "rendered {} data structs (THINK) + DO arm controllers:::: = {fn_count} fns \ + across {} controllers [{} part_of x {} is_a rail, {} tiles]; {edges} SPO edges -> {}", classes.len(), tree.len(), parts.len(),