Skip to content

Commit

Permalink
fix: new lines no longer break wrapped highlight blocks (#23)
Browse files Browse the repository at this point in the history
  • Loading branch information
bandantonio authored Jul 4, 2024
1 parent 8d5f479 commit c038800
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 9 deletions.
4 changes: 2 additions & 2 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"id": "apple-books-import-highlights",
"name": "Apple Books - Import Highlights",
"version": "1.2.3",
"version": "1.2.4",
"minAppVersion": "0.15.0",
"description": "Import your Apple Books highlights and notes to Obsidian.",
"author": "bandantonio",
"authorUrl": "https://github.com/bandantonio",
"isDesktopOnly": true
}
}
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "obsidian-apple-books-highlights-plugin",
"version": "1.2.3",
"version": "1.2.4",
"description": "Import highlights and notes from your Apple Books to Obsidian",
"main": "main.js",
"scripts": {
Expand Down Expand Up @@ -58,4 +58,4 @@
"dayjs": "^1.11.10",
"handlebars": "^4.7.8"
}
}
}
16 changes: 13 additions & 3 deletions src/methods/aggregateDetails.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,14 @@ export const aggregateBookAndHighlightDetails = async (): Promise<ICombinedBooks
bookLastOpenedDate: book.ZLASTOPENDATE,
bookCoverUrl: book.ZCOVERURL,
annotations: bookRelatedAnnotations.map(annotation => {
const textForContext = annotation.ZANNOTATIONREPRESENTATIVETEXT;
const userNote = annotation.ZANNOTATIONNOTE;

return {
chapter: annotation.ZFUTUREPROOFING5,
contextualText: annotation.ZANNOTATIONREPRESENTATIVETEXT,
highlight: annotation.ZANNOTATIONSELECTEDTEXT,
note: annotation.ZANNOTATIONNOTE,
contextualText: textForContext ? preserveNewlineIndentation(textForContext) : textForContext,
highlight: preserveNewlineIndentation(annotation.ZANNOTATIONSELECTEDTEXT),
note: userNote ? preserveNewlineIndentation(userNote) : userNote,
highlightStyle: annotation.ZANNOTATIONSTYLE,
highlightCreationDate: annotation.ZANNOTATIONCREATIONDATE,
highlightModificationDate: annotation.ZANNOTATIONMODIFICATIONDATE
Expand All @@ -43,3 +46,10 @@ export const aggregateBookAndHighlightDetails = async (): Promise<ICombinedBooks

return resultingHighlights;
};

// Handler of double new line characters (\n\n) to preserve proper indentation in text blocks
const preserveNewlineIndentation = (textBlock: string): string => {
const stringWithNewLines = /\n+\s*/g;

return stringWithNewLines.test(textBlock) ? textBlock.replace(stringWithNewLines, '\n') : textBlock;
}
18 changes: 18 additions & 0 deletions test/mocks/aggregatedDetailsData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,16 @@ export const annotationsToAggregate = [{
"ZANNOTATIONMODIFICATIONDATE": 731876693.002279,
"ZANNOTATIONSTYLE": 3,
"ZANNOTATIONDELETED": 0
}, {
"ZANNOTATIONASSETID": "THBFYNJKTGFTTVCGSAE5",
"ZFUTUREPROOFING5": "Another aggregated Introduction",
"ZANNOTATIONREPRESENTATIVETEXT": "This is a contextual text for the aggregated hightlight from the Apple iPhone User Guide\n\ncontaining a new line to test the preservation of indentation",
"ZANNOTATIONSELECTEDTEXT": "aggregated hightlight from the Apple iPhone User Guide\n\ncontaining a new line to test the preservation of indentation",
"ZANNOTATIONNOTE": "Test note for the aggregated hightlight from the Apple iPhone User Guide\n\nalong with a new line to test the preservation of indentation",
"ZANNOTATIONCREATIONDATE": 731876693.002279,
"ZANNOTATIONMODIFICATIONDATE": 731876693.002279,
"ZANNOTATIONSTYLE": 3,
"ZANNOTATIONDELETED": 0
}];

export const aggregatedHighlights = [{
Expand All @@ -36,5 +46,13 @@ export const aggregatedHighlights = [{
"highlightStyle": 3,
"highlightCreationDate": 731876693.002279,
"highlightModificationDate": 731876693.002279
}, {
"chapter": "Another aggregated Introduction",
"contextualText": "This is a contextual text for the aggregated hightlight from the Apple iPhone User Guide\ncontaining a new line to test the preservation of indentation",
"highlight": "aggregated hightlight from the Apple iPhone User Guide\ncontaining a new line to test the preservation of indentation",
"note": "Test note for the aggregated hightlight from the Apple iPhone User Guide\nalong with a new line to test the preservation of indentation",
"highlightStyle": 3,
"highlightCreationDate": 731876693.002279,
"highlightModificationDate": 731876693.002279
}]
}];
26 changes: 24 additions & 2 deletions test/mocks/renderedTemplate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Link:: [Apple Books Link](ibooks://assetid/THBFYNJKTGFTTVCGSAE5)
## Annotations
Number of annotations:: 1
Number of annotations:: 2
----
Expand All @@ -13,6 +13,16 @@ Number of annotations:: 1
- 🎯 Highlight:: aggregated hightlight from the Apple iPhone User Guide
- 📝 Note:: Test note for the aggregated hightlight from the Apple iPhone User Guide
----
- 📖 Chapter:: Another aggregated Introduction
- 🔖 Context:: This is a contextual text for the aggregated hightlight from the Apple iPhone User Guide
containing a new line to test the preservation of indentation
- 🎯 Highlight:: aggregated hightlight from the Apple iPhone User Guide
containing a new line to test the preservation of indentation
- 📝 Note:: Test note for the aggregated hightlight from the Apple iPhone User Guide
along with a new line to test the preservation of indentation
`;

export const renderedCustomTemplateMock = `Title:: 📕 Apple iPhone - User Guide - Instructions - with - restricted - symbols - in - title
Expand All @@ -26,7 +36,7 @@ Link:: [Apple Books Link](ibooks://assetid/THBFYNJKTGFTTVCGSAE5)
## Annotations
Number of annotations:: 1
Number of annotations:: 2
----
Expand All @@ -37,4 +47,16 @@ Number of annotations:: 1
- <small>📅 Highlight taken on:: 2024-03-11 03:04:53 PM -04:00</small>
- <small>📅 Highlight modified on:: 2024-03-11 03:04:53 PM -04:00</small>
----
- 📖 Chapter:: Another aggregated Introduction
- 🔖 Context:: This is a contextual text for the aggregated hightlight from the Apple iPhone User Guide
containing a new line to test the preservation of indentation
- 🎯 Highlight:: <mark style="background:rgb(249,213,108); color:#000; padding:2px;">aggregated hightlight from the Apple iPhone User Guide
containing a new line to test the preservation of indentation</mark>
- 📝 Note:: Test note for the aggregated hightlight from the Apple iPhone User Guide
along with a new line to test the preservation of indentation
- <small>📅 Highlight taken on:: 2024-03-11 03:04:53 PM -04:00</small>
- <small>📅 Highlight modified on:: 2024-03-11 03:04:53 PM -04:00</small>
`;

0 comments on commit c038800

Please sign in to comment.