From 66ed2da9fd4275e45df01c6226f0f5b811eb0cdc Mon Sep 17 00:00:00 2001 From: noarkhh Date: Wed, 15 Oct 2025 11:44:49 +0200 Subject: [PATCH 1/3] Put pages into subcategories, include tutorials --- .gitmodules | 3 + guides/membrane_tutorials | 1 + .../components_lifecycle.md | 0 guides/{ => useful_concepts}/timer.md | 0 mix.exs | 144 +++++++++++------- 5 files changed, 94 insertions(+), 54 deletions(-) create mode 100644 .gitmodules create mode 160000 guides/membrane_tutorials rename guides/{ => useful_concepts}/components_lifecycle.md (100%) rename guides/{ => useful_concepts}/timer.md (100%) diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..68cd3dfad --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "guides/membrane_tutorials"] + path = guides/membrane_tutorials + url = https://github.com/membraneframework/membrane_tutorials.git diff --git a/guides/membrane_tutorials b/guides/membrane_tutorials new file mode 160000 index 000000000..3e676855e --- /dev/null +++ b/guides/membrane_tutorials @@ -0,0 +1 @@ +Subproject commit 3e676855eeeab0da495da549133c4886b3608d16 diff --git a/guides/components_lifecycle.md b/guides/useful_concepts/components_lifecycle.md similarity index 100% rename from guides/components_lifecycle.md rename to guides/useful_concepts/components_lifecycle.md diff --git a/guides/timer.md b/guides/useful_concepts/timer.md similarity index 100% rename from guides/timer.md rename to guides/useful_concepts/timer.md diff --git a/mix.exs b/mix.exs index 41de45678..fd0338ae9 100644 --- a/mix.exs +++ b/mix.exs @@ -59,19 +59,7 @@ defmodule Membrane.Mixfile do defp docs do [ main: "readme", - extras: [ - "README.md", - "CHANGELOG.md", - "CONTRIBUTING.md", - "guides/upgrading/v0.11.md", - "guides/upgrading/v0.12.md", - "guides/upgrading/v1.0.0-rc0.md", - "guides/upgrading/v1.0.0-rc1.md", - "guides/upgrading/v1.0.0.md", - "guides/components_lifecycle.md", - "guides/timer.md", - LICENSE: [title: "License"] - ], + extras: extras(), formatters: ["html"], source_ref: @source_ref, nest_modules_by_prefix: [ @@ -89,47 +77,95 @@ defmodule Membrane.Mixfile do Membrane.RCPipeline, Membrane.RCMessage ], - groups_for_modules: [ - Pipeline: [~r/^Membrane\.Pipeline($|\.)/], - "RC Pipeline": [ - ~r/^Membrane\.(RCPipeline)($|\.)/, - ~r/^Membrane\.(RCMessage)($|\.)/ - ], - Bin: [~r/^Membrane\.Bin($|\.)/], - Element: [ - ~r/^Membrane\.Filter($|\.)/, - ~r/^Membrane\.Endpoint($|\.)/, - ~r/^Membrane\.Sink($|\.)/, - ~r/^Membrane\.Source($|\.)/, - ~r/^Membrane\.Element($|\.)/ - ], - "Helper Elements": [ - ~r/^Membrane\.Connector($|\.)/, - ~r/^Membrane\.Fake($|\.)/, - ~r/^Membrane\.Debug($|\.)/, - ~r/^Membrane\.Tee($|\.)/, - ~r/^Membrane\.Funnel($|\.)/, - ~r/^Membrane\.FilterAggregator($|\.)/ - ], - Parent: [~r/^Membrane\.(Parent|ChildrenSpec)($|\.)/], - Child: [~r/^Membrane\.(Child|ChildEntry)($|\.)/], - Communication: [ - ~r/^Membrane\.(Buffer|Payload|StreamFormat|Event|EventProtocol|ChildNotification|ParentNotification|Pad|KeyframeRequestEvent|RemoteStream)($|\.)/ - ], - Logging: [~r/^Membrane\.Logger($|\.)/], - Telemetry: [~r/^Membrane\.Telemetry($|\.)/], - Testing: [~r/^Membrane\.Testing($|\.)/], - Utils: [ - ~r/^Membrane\.Clock($|\.)/, - ~r/^Membrane\.Sync($|\.)/, - ~r/^Membrane\.Time($|\.)/, - ~r/^Membrane\.Playback($|\.)/, - ~r/^Membrane\.ComponentPath($|\.)/, - ~r/^Membrane\.ResourceGuard($|\.)/, - ~r/^Membrane\.UtilitySupervisor($|\.)/ - ], - Errors: [~r/Error$/] - ] + groups_for_modules: groups_for_modules(), + groups_for_extras: groups_for_extras() + ] + end + + defp extras do + [ + "README.md", + "CHANGELOG.md", + "CONTRIBUTING.md", + Path.wildcard("guides/**/*.md") + |> Enum.reject(&(Path.basename(&1) in ["README.md", "index.md"])) + |> Enum.map(&{String.to_atom(&1), [title: reformat_tutorial_title(&1)]}), + LICENSE: [title: "License"] + ] + |> List.flatten() + end + + defp reformat_tutorial_title(filename) do + {first_letter, rest} = + filename + |> Path.basename() + |> String.replace(~r/^\d+_/, "") + |> String.replace("_", " ") + |> String.trim_trailing(".md") + |> String.next_grapheme() + + String.upcase(first_letter) <> rest + end + + defp groups_for_modules do + [ + Pipeline: [~r/^Membrane\.Pipeline($|\.)/], + "RC Pipeline": [ + ~r/^Membrane\.(RCPipeline)($|\.)/, + ~r/^Membrane\.(RCMessage)($|\.)/ + ], + Bin: [~r/^Membrane\.Bin($|\.)/], + Element: [ + ~r/^Membrane\.Filter($|\.)/, + ~r/^Membrane\.Endpoint($|\.)/, + ~r/^Membrane\.Sink($|\.)/, + ~r/^Membrane\.Source($|\.)/, + ~r/^Membrane\.Element($|\.)/ + ], + "Helper Elements": [ + ~r/^Membrane\.Connector($|\.)/, + ~r/^Membrane\.Fake($|\.)/, + ~r/^Membrane\.Debug($|\.)/, + ~r/^Membrane\.Tee($|\.)/, + ~r/^Membrane\.Funnel($|\.)/, + ~r/^Membrane\.FilterAggregator($|\.)/ + ], + Parent: [~r/^Membrane\.(Parent|ChildrenSpec)($|\.)/], + Child: [~r/^Membrane\.(Child|ChildEntry)($|\.)/], + Communication: [ + ~r/^Membrane\.(Buffer|Payload|StreamFormat|Event|EventProtocol|ChildNotification|ParentNotification|Pad|KeyframeRequestEvent|RemoteStream)($|\.)/ + ], + Logging: [~r/^Membrane\.Logger($|\.)/], + Telemetry: [~r/^Membrane\.Telemetry($|\.)/], + Testing: [~r/^Membrane\.Testing($|\.)/], + Utils: [ + ~r/^Membrane\.Clock($|\.)/, + ~r/^Membrane\.Sync($|\.)/, + ~r/^Membrane\.Time($|\.)/, + ~r/^Membrane\.Playback($|\.)/, + ~r/^Membrane\.ComponentPath($|\.)/, + ~r/^Membrane\.ResourceGuard($|\.)/, + ~r/^Membrane\.UtilitySupervisor($|\.)/ + ], + Errors: [~r/Error$/] + ] + end + + defp groups_for_extras do + [ + "Get started with Membrane": + Path.wildcard("guides/membrane_tutorials/get_started_with_membrane/*.md"), + "Intro to pipelines": Path.wildcard("guides/membrane_tutorials/basic_pipeline/*.md"), + "Intro to pipelines - advanced concepts": + Path.wildcard("guides/membrane_tutorials/basic_pipeline_extension/*.md"), + "Creating plugins": Path.wildcard("guides/membrane_tutorials/create_new_plugin/*.md"), + "Useful concepts": Path.wildcard("guides/useful_concepts/*.md"), + "Digital video introduction": + Path.wildcard("guides/membrane_tutorials/digital_video_introduction/*.md"), + H264: Path.wildcard("guides/membrane_tutorials/h264/*.md"), + Broadcasting: Path.wildcard("guides/membrane_tutorials/broadcasting/*.md"), + Glossary: Path.wildcard("guides/membrane_tutorials/glossary/*.md"), + Upgrading: Path.wildcard("guides/upgrading/*.md") ] end From c33ddb6b9d4d3f867c90f29485bc6d9c1b0ffa15 Mon Sep 17 00:00:00 2001 From: noarkhh Date: Wed, 15 Oct 2025 14:22:13 +0200 Subject: [PATCH 2/3] Fix assets --- mix.exs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mix.exs b/mix.exs index fd0338ae9..cb471a592 100644 --- a/mix.exs +++ b/mix.exs @@ -62,6 +62,16 @@ defmodule Membrane.Mixfile do extras: extras(), formatters: ["html"], source_ref: @source_ref, + assets: %{ + "guides/membrane_tutorials/get_started_with_membrane/assets" => "assets", + "guides/membrane_tutorials/basic_pipeline/assets" => "assets", + "guides/membrane_tutorials/basic_pipeline_extension/assets" => "assets", + "guides/membrane_tutorials/create_new_plugin/assets" => "assets", + "guides/membrane_tutorials/digital_video_introduction/assets" => "assets", + "guides/membrane_tutorials/h264/assets" => "assets", + "guides/membrane_tutorials/broadcasting/assets" => "assets", + "guides/membrane_tutorials/glossary/assets" => "assets" + }, nest_modules_by_prefix: [ Membrane.Bin, Membrane.Element, @@ -88,7 +98,7 @@ defmodule Membrane.Mixfile do "CHANGELOG.md", "CONTRIBUTING.md", Path.wildcard("guides/**/*.md") - |> Enum.reject(&(Path.basename(&1) in ["README.md", "index.md"])) + |> Enum.reject(&(Path.basename(&1) in ["README.md", "index.md", "1_preface.md"])) |> Enum.map(&{String.to_atom(&1), [title: reformat_tutorial_title(&1)]}), LICENSE: [title: "License"] ] @@ -160,8 +170,6 @@ defmodule Membrane.Mixfile do Path.wildcard("guides/membrane_tutorials/basic_pipeline_extension/*.md"), "Creating plugins": Path.wildcard("guides/membrane_tutorials/create_new_plugin/*.md"), "Useful concepts": Path.wildcard("guides/useful_concepts/*.md"), - "Digital video introduction": - Path.wildcard("guides/membrane_tutorials/digital_video_introduction/*.md"), H264: Path.wildcard("guides/membrane_tutorials/h264/*.md"), Broadcasting: Path.wildcard("guides/membrane_tutorials/broadcasting/*.md"), Glossary: Path.wildcard("guides/membrane_tutorials/glossary/*.md"), From a00786f59c0d7b0728d2e19efe037f8f84b08c6f Mon Sep 17 00:00:00 2001 From: noarkhh Date: Wed, 29 Oct 2025 09:12:06 +0100 Subject: [PATCH 3/3] Update submodule --- guides/membrane_tutorials | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/membrane_tutorials b/guides/membrane_tutorials index 3e676855e..1ecc2ad2e 160000 --- a/guides/membrane_tutorials +++ b/guides/membrane_tutorials @@ -1 +1 @@ -Subproject commit 3e676855eeeab0da495da549133c4886b3608d16 +Subproject commit 1ecc2ad2ecf6d2ae2425bfc16a86503e49efc2bf