Skip to content

Commit

Permalink
Add comment directive (#20)
Browse files Browse the repository at this point in the history
* add comment type
  • Loading branch information
jeremiahlukus authored Oct 26, 2023
1 parent d6998b6 commit 5e4f9da
Show file tree
Hide file tree
Showing 6 changed files with 256 additions and 135 deletions.
18 changes: 9 additions & 9 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,33 @@ name: Test

# Run on every pull-requests
on: [push, pull_request]


jobs:
test:
# This job will run on ubuntu virtual machine
runs-on: ubuntu-latest
steps:

# Setup Java environment in order to build the Android app.
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: '12.x'

# Setup the flutter environment.
- uses: subosito/flutter-action@v1
with:
flutter-version: '3.0.x'

# Get flutter dependencies.
- run: flutter pub get

# Check for any formatting issues in the code.
- run: flutter format --set-exit-if-changed .
- run: dart format -l 80 --set-exit-if-changed .

# Statically analyze the Dart code for any errors.
- run: flutter analyze .

# Run unit and widget tests for our flutter project.
- run: flutter test
105 changes: 62 additions & 43 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,58 +5,58 @@ packages:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
version: "2.8.2"
version: "2.11.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.1"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.dartlang.org"
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
version: "1.3.0"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.dartlang.org"
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.dev"
source: hosted
version: "1.1.0"
version: "1.1.1"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev"
source: hosted
version: "1.16.0"
version: "1.17.2"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
sha256: "486b7bc707424572cdf7bd7e812a0c146de3fd47ecadf070254cc60383f21dd8"
url: "https://pub.dev"
source: hosted
version: "1.0.3"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.3.1"
flutter:
dependency: "direct main"
description: flutter
Expand All @@ -78,30 +78,34 @@ packages:
dependency: transitive
description:
name: matcher
url: "https://pub.dartlang.org"
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev"
source: hosted
version: "0.12.11"
version: "0.12.16"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev"
source: hosted
version: "0.1.4"
version: "0.5.0"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev"
source: hosted
version: "1.7.0"
version: "1.9.1"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev"
source: hosted
version: "1.8.1"
version: "1.8.3"
sky_engine:
dependency: transitive
description: flutter
Expand All @@ -111,51 +115,66 @@ packages:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.8.2"
version: "1.10.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.11.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.1"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
version: "1.2.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev"
source: hosted
version: "0.4.9"
version: "0.6.0"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "0.1.4-beta"
sdks:
dart: ">=2.17.0-0 <3.0.0"
dart: ">=3.1.0-185.0.dev <4.0.0"
flutter: ">=1.17.0"
32 changes: 28 additions & 4 deletions lib/src/lyrics_renderer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,17 @@ class LyricsRenderer extends StatefulWidget {
/// If not defined it will be the italic version of [textStyle]
final TextStyle? capoStyle;

/// If not defined it will be the italic version of [textStyle]
final TextStyle? commentStyle;

const LyricsRenderer(
{Key? key,
required this.lyrics,
required this.textStyle,
required this.chordStyle,
required this.onTapChord,
this.chorusStyle,
this.commentStyle,
this.capoStyle,
this.scaleFactor = 1.0,
this.showChord = true,
Expand All @@ -77,7 +81,9 @@ class _LyricsRendererState extends State<LyricsRenderer> {
late final ScrollController _controller;
late TextStyle chorusStyle;
late TextStyle capoStyle;
late TextStyle commentStyle;
bool _isChorus = false;
bool _isComment = false;

@override
void initState() {
Expand All @@ -86,6 +92,11 @@ class _LyricsRendererState extends State<LyricsRenderer> {
widget.textStyle.copyWith(fontWeight: FontWeight.bold);
capoStyle = widget.capoStyle ??
widget.textStyle.copyWith(fontStyle: FontStyle.italic);
commentStyle = widget.commentStyle ??
widget.textStyle.copyWith(
fontStyle: FontStyle.italic,
fontSize: widget.textStyle.fontSize! - 2,
);
_controller = ScrollController();
WidgetsBinding.instance.addPostFrameCallback((_) {
// executes after build
Expand All @@ -99,6 +110,16 @@ class _LyricsRendererState extends State<LyricsRenderer> {
super.dispose();
}

TextStyle getLineTextStyle() {
if (_isChorus) {
return chorusStyle;
} else if (_isComment) {
return commentStyle;
} else {
return widget.textStyle;
}
}

@override
Widget build(BuildContext context) {
ChordProcessor _chordProcessor =
Expand Down Expand Up @@ -137,6 +158,11 @@ class _LyricsRendererState extends State<LyricsRenderer> {
if (line.isEndOfChorus()) {
_isChorus = false;
}
if (line.isComment()) {
_isComment = true;
} else {
_isComment = false;
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expand Down Expand Up @@ -165,10 +191,8 @@ class _LyricsRendererState extends State<LyricsRenderer> {
),
RichText(
textScaleFactor: widget.scaleFactor,
text: TextSpan(
text: line.lyrics,
style: _isChorus ? chorusStyle : widget.textStyle,
),
text:
TextSpan(text: line.lyrics, style: getLineTextStyle()),
)
],
);
Expand Down
15 changes: 13 additions & 2 deletions lib/src/model/chord_lyrics_line.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class ChordLyricsLine {
lyrics.contains(startOfChorusAbbreviation);
if (out) {
lyrics = lyrics.replaceAll(startOfChorus, '');
lyrics = lyrics.replaceAll(startOfChorusAbbreviation, '');
lyrics = lyrics.replaceAll(startOfChorusAbbreviation, '').trim();
}
return out;
}
Expand All @@ -29,7 +29,18 @@ class ChordLyricsLine {
lyrics.contains(endOfChorusAbbreviation);
if (out) {
lyrics = lyrics.replaceAll(endOfChorus, '');
lyrics = lyrics.replaceAll(endOfChorusAbbreviation, '');
lyrics = lyrics.replaceAll(endOfChorusAbbreviation, '').trim();
}
return out;
}

/// Remove also the keyword
bool isComment() {
const String comment = '{comment:';
bool out = lyrics.contains(comment);
if (out) {
lyrics = lyrics.replaceAll(comment, '');
lyrics = lyrics.replaceAll('}', '').trim();
}
return out;
}
Expand Down
Loading

0 comments on commit 5e4f9da

Please sign in to comment.