Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
50 changes: 50 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
name: Bug Report
about: Create a report to help us improve
title: '[BUG] '
labels: bug
assignees: ''
---

## Description
A clear and concise description of what the bug is.

## Steps to Reproduce
Steps to reproduce the behavior:
1. Parse expression '...'
2. Create context with '...'
3. Call evaluator with '...'
4. See error

## Expected Behavior
A clear and concise description of what you expected to happen.

## Actual Behavior
What actually happened. Include error messages if applicable.

## Code Example
```dart
// Minimal code example that reproduces the issue
import 'package:expressions/expressions.dart';

void main() {
var expr = Expression.parse('...');
var evaluator = const ExpressionEvaluator();
var result = evaluator.eval(expr, {...});
print(result); // Expected: X, Actual: Y
}
```

## Environment
* **Dart SDK version**: (run `dart --version`)
* **Package version**: (check pubspec.yaml)
* **Operating System**: (e.g., macOS 12.0, Ubuntu 20.04, Windows 11)

## Additional Context
Add any other context about the problem here, such as:
* Does it work in previous versions?
* Are there any error stack traces?
* Any workarounds you've found?

## Possible Solution
If you have ideas on how to fix this, please share them here.
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: Feature Request
about: Suggest an idea for this project
title: '[FEATURE] '
labels: enhancement
assignees: ''
---

## Is your feature request related to a problem?
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

## Proposed Solution
A clear and concise description of what you want to happen.

## Example Usage
Show how you'd like to use the feature:
```dart
// Example of how the feature would work
var expr = Expression.parse('...');
// ... your proposed API usage
```

## Alternatives Considered
A clear and concise description of any alternative solutions or features you've considered.

## Additional Context
Add any other context, mockups, or screenshots about the feature request here.

## Implementation Ideas
If you have thoughts on how this could be implemented, share them here. This is optional but helpful!

## Breaking Changes
Would this feature require breaking changes to the existing API?
- [ ] Yes
- [ ] No
- [ ] Unsure

## Workarounds
Are there any current workarounds for this functionality?
89 changes: 89 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
## Description
<!-- Provide a brief description of the changes in this PR -->

## Type of Change
<!-- Mark the relevant option with an "x" -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
- [ ] Performance improvement
- [ ] Code refactoring
- [ ] Test improvements
- [ ] CI/CD improvements

## Related Issues
<!-- Link related issues here using keywords like "Fixes #123" or "Closes #456" -->
Fixes #

## Changes Made
<!-- Provide a detailed list of changes -->
-
-
-

## Testing
<!-- Describe the tests you ran and their results -->

### Test Coverage
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] All tests pass locally (`dart test`)
- [ ] Code coverage maintained or improved

### Manual Testing
<!-- Describe any manual testing performed -->
```dart
// Example code demonstrating the changes work as expected
```

## Documentation
<!-- Check all that apply -->
- [ ] Code includes dartdoc comments
- [ ] README updated (if applicable)
- [ ] CHANGELOG updated
- [ ] Examples updated (if applicable)
- [ ] CLAUDE.md updated (for architectural changes)

## Code Quality
<!-- Ensure these are checked before submitting -->
- [ ] Code follows Dart style guidelines
- [ ] Ran `dart format .` to format code
- [ ] Ran `dart analyze` with no issues
- [ ] No new warnings introduced
- [ ] All linter rules pass

## Breaking Changes
<!-- If this PR includes breaking changes, describe them here -->
<!-- Also describe migration path for users -->

**Does this PR introduce breaking changes?**
- [ ] Yes
- [ ] No

<!-- If yes, describe the breaking changes and migration path: -->

## Performance Impact
<!-- Describe any performance implications -->
- [ ] No significant performance impact
- [ ] Performance improved
- [ ] Performance may be affected (explain below)

<!-- Details: -->

## Screenshots/Examples
<!-- If applicable, add screenshots or example output to help explain your changes -->

## Checklist
<!-- Final checks before submitting -->
- [ ] My code follows the project's coding standards
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code where necessary
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix/feature works
- [ ] New and existing tests pass locally
- [ ] Any dependent changes have been merged and published

## Additional Notes
<!-- Any additional information that reviewers should know -->
117 changes: 117 additions & 0 deletions .github/workflows/dart.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
name: Dart CI

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
test:
name: Test on ${{ matrix.os }} / Dart ${{ matrix.sdk }}
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
sdk: ['3.0.0', 'stable', 'beta']

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Dart
uses: dart-lang/setup-dart@v1
with:
sdk: ${{ matrix.sdk }}

- name: Install dependencies
run: dart pub get

- name: Verify formatting
run: dart format --output=none --set-exit-if-changed .
if: matrix.sdk == 'stable' && matrix.os == 'ubuntu-latest'

- name: Analyze code
run: dart analyze --fatal-infos

- name: Run tests
run: dart test

coverage:
name: Code Coverage
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Dart
uses: dart-lang/setup-dart@v1
with:
sdk: stable

- name: Install dependencies
run: dart pub get

- name: Collect coverage
run: dart test --coverage=coverage

- name: Format coverage
run: |
dart pub global activate coverage
dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: coverage/lcov.info
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}

documentation:
name: Generate Documentation
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Dart
uses: dart-lang/setup-dart@v1
with:
sdk: stable

- name: Install dependencies
run: dart pub get

- name: Generate documentation
run: dart doc --validate-links

- name: Deploy to GitHub Pages
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./doc/api
cname: false

publish-dry-run:
name: Publish Dry Run
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Dart
uses: dart-lang/setup-dart@v1
with:
sdk: stable

- name: Install dependencies
run: dart pub get

- name: Verify package
run: dart pub publish --dry-run
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,6 @@ doc/api/
*.ipr
*.iws
.idea/
coverage/
logs/
CLAUDE.md
Loading