Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

update deeplink#1304

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
chillenberger merged 1 commit intomasterfromdan-deeplink-update
Jan 25, 2024
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 26 additions & 33 deletionspgml-dashboard/src/api/cms.rs
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -116,19 +116,15 @@ pub struct Document {
impl Document {
pub async fn from_path(path: &PathBuf) -> anyhow::Result<Document, std::io::Error> {
let doc_type = match path.strip_prefix(config::cms_dir()) {
Ok(path) => {
match path.into_iter().next() {
Some(dir) => {
match &PathBuf::from(dir).display().to_string()[..] {
"blog" => Some(DocType::Blog),
"docs" => Some(DocType::Docs),
"careers" => Some(DocType::Careers),
_ => None
}
},
_ => None
}
},
Ok(path) => match path.into_iter().next() {
Some(dir) => match &PathBuf::from(dir).display().to_string()[..] {
"blog" => Some(DocType::Blog),
"docs" => Some(DocType::Docs),
"careers" => Some(DocType::Careers),
_ => None,
},
_ => None,
},
_ => None,
};

Expand All@@ -155,7 +151,11 @@ impl Document {
(None, contents)
};

let default_image_path = BLOG.asset_url_root.join("blog_image_placeholder.png").display().to_string();
let default_image_path = BLOG
.asset_url_root
.join("blog_image_placeholder.png")
.display()
.to_string();

// parse meta section
let (description, image, featured, tags) = match meta {
Expand All@@ -171,16 +171,14 @@ impl Document {
Some(default_image_path.clone())
} else {
match PathBuf::from_str(meta["image"].as_str().unwrap()) {
Ok(image_path) => {
match image_path.file_name() {
Some(file_name) => {
let file = PathBuf::from(file_name).display().to_string();
Some(BLOG.asset_url_root.join(file).display().to_string())
},
_ => Some(default_image_path.clone())
Ok(image_path) => match image_path.file_name() {
Some(file_name) => {
let file = PathBuf::from(file_name).display().to_string();
Some(BLOG.asset_url_root.join(file).display().to_string())
}
_ => Some(default_image_path.clone()),
},
_ => Some(default_image_path.clone())
_ => Some(default_image_path.clone()),
}
};

Expand All@@ -202,12 +200,7 @@ impl Document {

(description, image, featured, tags)
}
None => (
None,
Some(default_image_path.clone()),
false,
Vec::new(),
),
None => (None, Some(default_image_path.clone()), false, Vec::new()),
};

let thumbnail = match &image {
Expand DownExpand Up@@ -287,7 +280,7 @@ pub struct Collection {
/// A list of old paths to new paths in this collection
redirects: HashMap<&'static str, &'static str>,
/// Url to assets for this collection
pub asset_url_root: PathBuf
pub asset_url_root: PathBuf,
}

impl Collection {
Expand DownExpand Up@@ -455,7 +448,7 @@ impl Collection {
if path.has_root() {
path = path.strip_prefix("/").unwrap().to_owned();
}

let mut path_v = path.components().collect::<Vec<_>>();
path_v.remove(0);

Expand DownExpand Up@@ -870,7 +863,7 @@ This is the end of the markdown
)
}

// Test we can parse doc meta with out issue.
// Test we can parse doc meta with out issue.
#[sqlx::test]
async fn docs_meta_parse() {
let collection = &crate::api::cms::DOCS;
Expand All@@ -883,7 +876,7 @@ This is the end of the markdown
}
}

// Test we can parse blog meta with out issue.
// Test we can parse blog meta with out issue.
#[sqlx::test]
async fn blog_meta_parse() {
let collection = &crate::api::cms::BLOG;
Expand All@@ -896,7 +889,7 @@ This is the end of the markdown
}
}

// Test we can parse career meta with out issue.
// Test we can parse career meta with out issue.
#[sqlx::test]
async fn career_meta_parse() {
let collection = &crate::api::cms::CAREERS;
Expand Down
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -30,9 +30,7 @@ impl LandingPage {
for url in urls {
let file = collection.url_to_path(url.as_ref());

let doc = crate::api::cms::Document::from_path(&file)
.await
.unwrap();
let doc = crate::api::cms::Document::from_path(&file).await.unwrap();

let meta = DocMeta {
description: doc.description,
Expand Down
31 changes: 3 additions & 28 deletionspgml-dashboard/src/templates/docs.rs
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
use convert_case;
use lazy_static::lazy_static;
use sailfish::TemplateOnce;
use serde::{Deserialize, Serialize};
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};

use crate::utils::markdown::SearchResult;

Expand All@@ -15,26 +12,6 @@ pub struct Search {
pub results: Vec<SearchResult>,
}

lazy_static! {
static ref CMS_IDENTIFIER: CmsIdentifier = CmsIdentifier::new();
}

// Prevent css collisions in cms header ids.
pub struct CmsIdentifier {
pub id: String,
}

impl CmsIdentifier {
pub fn new() -> CmsIdentifier {
let mut s = DefaultHasher::new();
"cms header".hash(&mut s);

CmsIdentifier {
id: s.finish().to_string(),
}
}
}

/// Table of contents link.
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct TocLink {
Expand All@@ -57,14 +34,12 @@ impl TocLink {

// gitbook style id's
let id = format!(
"{}{}-{}",
id,
"{id}{}",
if counter > 0 {
format!("-{counter}")
} else {
String::new()
},
CMS_IDENTIFIER.id
}
);

TocLink {
Expand DownExpand Up@@ -92,7 +67,7 @@ impl TocLink {
},
_ => TocLink {
title: link.clone(),
id: format!("#{}-{}", link.clone(), CMS_IDENTIFIER.id),
id: format!("{}", link.clone()),
level: 0,
},
}
Expand Down
6 changes: 5 additions & 1 deletionpgml-dashboard/src/utils/config.rs
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -146,7 +146,11 @@ pub fn asset_url(path: Cow<str>) -> String {
}

pub fn site_domain() -> String {
String::from("https://postgresml.org")
if CONFIG.dev_mode {
String::from("https://localhost")
} else {
String::from("https://postgresml.org")
}
}

fn env_is_set(name: &str) -> bool {
Expand Down
23 changes: 17 additions & 6 deletionspgml-dashboard/src/utils/markdown.rs
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ use tantivy::query::{QueryParser, RegexQuery};
use tantivy::schema::*;
use tantivy::tokenizer::{LowerCaser, NgramTokenizer, TextAnalyzer};
use tantivy::{Index, IndexReader, SnippetGenerator};
use url::Url;

use std::sync::Mutex;

Expand DownExpand Up@@ -795,11 +796,18 @@ pub fn mkdocs<'a>(root: &'a AstNode<'a>, arena: &'a Arena<AstNode<'a>>) -> anyho

iter_nodes(root, &mut |node| {
match &mut node.data.borrow_mut().value {
// Strip .md extensions that gitbook includes in page link urls
// Strip .md extensions that gitbook includes in page link urls.
&mut NodeValue::Link(ref mut link) => {
let path = Path::new(link.url.as_str());

if path.is_relative() {
let url = Url::parse(link.url.as_str());

// Ignore absolute urls that are not site domain, github has .md endpoints
if url.is_err()
|| url?.host_str().unwrap_or_else(|| "")
== Url::parse(&config::site_domain())?
.host_str()
.unwrap_or_else(|| "postgresml.org")
{
let fragment = match link.url.find("#") {
Some(index) => link.url[index + 1..link.url.len()].to_string(),
_ => "".to_string(),
Expand All@@ -822,10 +830,13 @@ pub fn mkdocs<'a>(root: &'a AstNode<'a>, arena: &'a Arena<AstNode<'a>>) -> anyho
}
}

//Add fragment paththat matches toc links.
//Reappend the pathfragment.
let header_id = TocLink::from_fragment(fragment).id;
for c in header_id.chars() {
link.url.push(c)
if header_id.len() > 0 {
link.url.push('#');
for c in header_id.chars() {
link.url.push(c)
}
}
}

Expand Down
13 changes: 0 additions & 13 deletionspgml-dashboard/static/js/docs-toc.js
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,19 +3,6 @@ import {
} from '@hotwired/stimulus';

export default class extends Controller {
connect() {
this.scrollSpyAppend();
}

scrollSpyAppend() {
const spy = new bootstrap.ScrollSpy(document.body, {
target: '#toc-nav',
smoothScroll: true,
rootMargin: '-10% 0% -50% 0%',
threshold: [1],
})
}

setUrlFragment(e) {
let href = e.target.attributes.href.nodeValue;
if (href) {
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp