Skip to content
This repository has been archived by the owner on Jan 25, 2024. It is now read-only.

Commit

Permalink
Merge pull request #292 from Parabeac/release/1.3.5
Browse files Browse the repository at this point in the history
Release/1.3.5
  • Loading branch information
mergify[bot] committed Mar 3, 2021
2 parents a837937 + cc4a897 commit 0641298
Show file tree
Hide file tree
Showing 22 changed files with 97 additions and 28 deletions.
17 changes: 14 additions & 3 deletions lib/eggs/injected_app_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,15 @@ class PBAppBarGenerator extends PBGenerator {
@override
String generate(
PBIntermediateNode source, GeneratorContext generatorContext) {
generatorContext.sizingContext = SizingValueContext.PointValue;
generatorContext.sizingContext = SizingValueContext.AppBarChild;
if (source is InjectedNavbar) {
var buffer = StringBuffer();

buffer.write('AppBar(');
if (source.leadingItem != null) {
source.leadingItem.currentContext = source.currentContext;
buffer.write(
'leading: ${source.leadingItem.generator.generate(source.leadingItem, generatorContext)},');
'leading: ${_wrapOnIconButton(source.leadingItem.generator.generate(source.leadingItem, generatorContext))}');
}
if (source.middleItem != null) {
source.middleItem.currentContext = source.currentContext;
Expand All @@ -110,11 +110,22 @@ class PBAppBarGenerator extends PBGenerator {
source.trailingItem.currentContext = source.currentContext;
trailingItem =
'${source.trailingItem.generator.generate(source.trailingItem, generatorContext)}';
buffer.write('actions: [$trailingItem],');
buffer.write('actions: [${_wrapOnIconButton(trailingItem)}],');
}

buffer.write(')');
return buffer.toString();
}
}

String _wrapOnIconButton(String body) {
return '''
IconButton(
icon: $body,
onPressed: () {
// TODO: Fill action
},
),
''';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,9 @@ class GeneratorContext {
SizingValueContext sizingContext = SizingValueContext.PointValue;
}

enum SizingValueContext { PointValue, MediaQueryValue, LayoutBuilderValue }
enum SizingValueContext {
PointValue,
MediaQueryValue,
LayoutBuilderValue,
AppBarChild,
}
6 changes: 5 additions & 1 deletion lib/generation/generators/layouts/pb_layout_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,17 @@ abstract class PBLayoutGenerator extends PBGenerator {
String generate(PBIntermediateNode source, GeneratorContext generatorContext);

String generateBodyBoilerplate(String body,
{String layoutName = 'Column', String crossAxisAlignment = ''}) {
{String layoutName = 'Column',
String crossAxisAlignment = '',
String mainAxisAlignment = ''}) {
layoutName ??= 'Column';
crossAxisAlignment ??= '';
mainAxisAlignment ??= '';
var buffer = StringBuffer();
layoutName[0].toUpperCase();
buffer.write('''$layoutName(
$crossAxisAlignment
$mainAxisAlignment
children:[
$body
]
Expand Down
9 changes: 6 additions & 3 deletions lib/generation/generators/layouts/pb_row_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ class PBRowGenerator extends PBLayoutGenerator {
counter++;
}

return generateBodyBoilerplate(buffer.toString(),
layoutName: 'Row',
crossAxisAlignment: source.alignment['crossAxisAlignment']);
return generateBodyBoilerplate(
buffer.toString(),
layoutName: 'Row',
crossAxisAlignment: source.alignment['crossAxisAlignment'],
mainAxisAlignment: source.alignment['mainAxisAlignment'],
);
}
}
}
1 change: 1 addition & 0 deletions lib/generation/generators/layouts/pb_stack_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class PBStackGenerator extends PBGenerator {
if (source.children.isNotEmpty) {
buffer.write('\nchildren: [');
for (var index = 0; index < source.children.length; index++) {
source.children[index].currentContext = source.currentContext;
var element = source.children[index].generator
.generate(source.children[index], generatorContext);
buffer.write(element);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ class BLoCMiddleware extends Middleware {

var isFirst = true;
await states.forEach((element) {
element.currentContext.treeRoot.data = node.managerData;
element.generator.templateStrategy = BLoCStateTemplateStrategy(
isFirst: isFirst,
abstractClassName: parentState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:parabeac_core/generation/generators/middleware/state_management/
import 'package:parabeac_core/generation/generators/pb_generation_manager.dart';
import 'package:parabeac_core/generation/generators/pb_variable.dart';
import 'package:parabeac_core/generation/generators/value_objects/file_structure_strategy.dart/provider_file_structure_strategy.dart';
import 'package:parabeac_core/generation/generators/value_objects/template_strategy/stateless_template_strategy.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_instance.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_symbol_storage.dart';
import 'package:recase/recase.dart';
Expand All @@ -26,12 +27,20 @@ class ProviderMiddleware extends Middleware {
node.currentContext.project.genProjectData
.addDependencies(PACKAGE_NAME, PACKAGE_VERSION);
managerData.addImport('package:provider/provider.dart');
watcherName = node.name.snakeCase + '_notifier';
var widgetName = node.functionCallName.camelCase;
var watcher;

watcherName = getVariableName(node.name.snakeCase + '_notifier');
var watcher = PBVariable(watcherName, 'final ', true,
'context.watch<${getName(node.functionCallName).pascalCase}>().${widgetName}');
managerData.addMethodVariable(watcher);
if (node.currentContext.treeRoot.rootNode.generator.templateStrategy
is StatelessTemplateStrategy) {
watcher = PBVariable(watcherName, 'final ', true,
'${getName(node.functionCallName).pascalCase}().${widgetName}');
managerData.addGlobalVariable(watcher);
} else {
watcher = PBVariable(watcherName, 'final ', true,
'context.watch<${getName(node.functionCallName).pascalCase}>().${widgetName}');
managerData.addMethodVariable(watcher);
}

addImportToCache(node.SYMBOL_ID, getImportPath(node, fileStrategy));

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:parabeac_core/generation/generators/middleware/state_management/utils/middleware_utils.dart';
import 'package:parabeac_core/generation/generators/value_objects/file_structure_strategy.dart/riverpod_file_structure_strategy.dart';
import 'package:parabeac_core/generation/generators/value_objects/generator_adapter.dart';
import 'package:parabeac_core/generation/generators/value_objects/template_strategy/stateless_template_strategy.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_instance.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_symbol_storage.dart';
Expand Down Expand Up @@ -31,14 +32,18 @@ class RiverpodMiddleware extends Middleware {
var watcher = PBVariable(watcherName + '_provider', 'final ', true,
'ChangeNotifierProvider((ref) => ${getName(node.functionCallName).pascalCase}())');

managerData.addMethodVariable(watcher);
var widgetName = node.functionCallName.camelCase;
if (node.currentContext.treeRoot.rootNode.generator.templateStrategy
is StatelessTemplateStrategy) {
managerData.addGlobalVariable(watcher);
} else {
managerData.addMethodVariable(watcher);
}

addImportToCache(node.SYMBOL_ID, getImportPath(node, fileStrategy));

if (node.generator is! StringGeneratorAdapter) {
node.generator =
StringGeneratorAdapter(getConsumer(watcherName, widgetName));
node.generator = StringGeneratorAdapter(
getConsumer(watcherName, node.functionCallName.camelCase));
}
return node;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class StatefulMiddleware extends Middleware {
});

await states.forEach((element) async {
element.currentContext.treeRoot.data = node.managerData;
await fileStrategy.generatePage(
await generationManager.generate(element),
'${parentDirectory}/${element.name.snakeCase}',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class MiddlewareUtils {
stateBuffer.write(MiddlewareUtils.generateVariable(node));
}
node?.auxiliaryData?.stateGraph?.states?.forEach((state) {
state.variation.node.currentContext.treeRoot.data = node.managerData;
var variationNode = state.variation.node;

if (variationNode is PBSharedMasterNode &&
Expand Down
2 changes: 1 addition & 1 deletion lib/generation/generators/symbols/pb_mastersym_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class PBMasterSymbolGenerator extends PBGenerator {
);
log.error(e.toString());
}

source.child.currentContext = source.currentContext;
var generatedWidget =
source.child.generator.generate(source.child, generatorContext);
if (generatedWidget == null || generatedWidget.isEmpty) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import 'package:parabeac_core/interpret_and_optimize/entities/inherited_scaffold
import 'package:parabeac_core/generation/generators/value_objects/file_structure_strategy.dart/flutter_file_structure_strategy.dart';
import 'package:parabeac_core/generation/generators/value_objects/file_structure_strategy.dart/pb_file_structure_strategy.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_instance.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_master_node.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_layout_intermediate_node.dart';
import 'package:parabeac_core/generation/generators/pb_flutter_generator.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_gen_cache.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_symbol_storage.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_project.dart';
import 'package:quick_log/quick_log.dart';
Expand Down Expand Up @@ -138,12 +140,9 @@ abstract class GenerationConfiguration {

void _commitImports(
PBIntermediateNode node, String directoryName, String fileName) {
var screenFilePath =
'${pbProject.projectName}/lib/screens/${directoryName}/${fileName.snakeCase}.dart';
var viewFilePath =
'${pbProject.projectName}/lib/views/${directoryName}/${fileName.snakeCase}.dart'; // Removed .g
var imports = ImportHelper.findImports(
node, node is InheritedScaffold ? screenFilePath : viewFilePath);
var nodePath = PBGenCache()
.getPath(node is PBSharedMasterNode ? node.SYMBOL_ID : node.UUID);
var imports = ImportHelper.findImports(node, nodePath);
imports.forEach((import) {
node.managerData.addImport(import);
});
Expand Down
4 changes: 4 additions & 0 deletions lib/generation/generators/visual-widgets/pb_padding_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ class PBPaddingGen extends PBGenerator {
@override
String generate(
PBIntermediateNode source, GeneratorContext generatorContext) {
if (generatorContext.sizingContext == SizingValueContext.AppBarChild) {
source.child.currentContext = source.currentContext;
return source.child.generator.generate(source.child, generatorContext);
}
if (!(source is Padding)) {
return '';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ class PBPositionedGenerator extends PBGenerator {
}

try {
source.child.currentContext = source.currentContext;
buffer.write(
'child: ${source.child.generator.generate(source.child, generatorContext)},');
} catch (e, stackTrace) {
Expand Down
2 changes: 2 additions & 0 deletions lib/interpret_and_optimize/entities/layouts/row.dart
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ class PBIntermediateRowLayout extends PBLayoutIntermediateNode {
// TODO: this is the default for now
alignment['crossAxisAlignment'] =
'crossAxisAlignment: CrossAxisAlignment.start,';
alignment['mainAxisAlignment'] =
'mainAxisAlignment: MainAxisAlignment.center,';
}

@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ List<PBIntermediateNode> handleFlex(bool isVertical, Point topLeft,
if (child is! PBIntermediateRowLayout &&
child is! PBIntermediateColumnLayout) {
// Wrap text in container
if (child is! Text)
if (child is! Text) {
resultingChildren.add(_putChildInFlex(isVertical, child, parentLength));
}
} else {
resultingChildren.add(child);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,12 @@ class PBVisualGenerationService implements PBGenerationService {
///We are assuming that since the [rootIntermediateNode] contains all of the nodes
///then it should represent the biggest screen size that encapsulates the entire UI elements.
void _extractScreenSize(PBIntermediateNode rootIntermediateNode) {
if (currentContext.screenBottomRightCorner == null &&
currentContext.screenTopLeftCorner == null) {
if ((currentContext.screenBottomRightCorner == null &&
currentContext.screenTopLeftCorner == null) ||
(currentContext.screenBottomRightCorner !=
rootIntermediateNode.bottomRightCorner ||
currentContext.screenTopLeftCorner !=
rootIntermediateNode.bottomRightCorner)) {
currentContext.screenBottomRightCorner =
rootIntermediateNode.bottomRightCorner;
currentContext.screenTopLeftCorner = rootIntermediateNode.topLeftCorner;
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: parabeac_core
description: A starting point for Dart libraries or applications.
version: 1.3.3
version: 1.3.5
# homepage: https://www.example.com

environment:
Expand Down
Binary file added test/assets/SymbolTest-simp.sketch
Binary file not shown.
6 changes: 6 additions & 0 deletions test/lib/middleware/bloc_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import 'package:parabeac_core/generation/generators/value_objects/file_structure
import 'package:parabeac_core/generation/generators/writers/pb_flutter_writer.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_intermediate_node_tree.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_project.dart';
import 'package:test/test.dart';
import 'provider_test.dart';
Expand All @@ -22,6 +23,8 @@ class MockContext extends Mock implements PBContext {}

class MockProject extends Mock implements PBProject {}

class MockTree extends Mock implements PBIntermediateTree {}

class MockPBGenerationProjectData extends Mock
implements PBGenerationProjectData {}

Expand Down Expand Up @@ -50,6 +53,7 @@ void main() {
var mockDirectedStateGraph = MockDirectedStateGraph();
var mockIntermediateState = MockIntermediateState();
var mockIntermediateVariation = MockIntermediateVariation();
var mockTree = MockTree();

setUp(() async {
/// Set up nodes
Expand All @@ -61,6 +65,7 @@ void main() {
// 2
when(node2.name).thenReturn('someElement/green');
when(node2.generator).thenReturn(mockPBGenerator);
when(node2.currentContext).thenReturn(mockContext);

/// IntermediateAuxiliaryData
when(mockIntermediateAuxiliaryData.stateGraph)
Expand All @@ -78,6 +83,7 @@ void main() {

/// Context
when(mockContext.project).thenReturn(mockProject);
when(mockContext.treeRoot).thenReturn(mockTree);

/// Project
when(mockProject.genProjectData).thenReturn(mockPBGenerationProjectData);
Expand Down
7 changes: 6 additions & 1 deletion test/lib/middleware/provider_test.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'dart:io';
import 'package:mockito/mockito.dart';
import 'package:parabeac_core/generation/generators/attribute-helper/pb_generator_context.dart';
import 'package:parabeac_core/generation/generators/middleware/state_management/provider_middleware.dart';
import 'package:parabeac_core/generation/generators/pb_generation_manager.dart';
import 'package:parabeac_core/generation/generators/pb_generator.dart';
Expand All @@ -10,6 +9,7 @@ import 'package:parabeac_core/generation/generators/value_objects/file_structure
import 'package:parabeac_core/generation/generators/writers/pb_flutter_writer.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_intermediate_node_tree.dart';
import 'package:parabeac_core/interpret_and_optimize/helpers/pb_project.dart';
import 'package:parabeac_core/interpret_and_optimize/state_management/directed_state_graph.dart';
import 'package:parabeac_core/interpret_and_optimize/state_management/intermediate_auxillary_data.dart';
Expand Down Expand Up @@ -41,6 +41,8 @@ class MockIntermediateState extends Mock implements IntermediateState {}

class MockIntermediateVariation extends Mock implements IntermediateVariation {}

class MockTree extends Mock implements PBIntermediateTree {}

void main() {
group('Middlewares Tests', () {
var testingPath = '${Directory.current.path}/test/lib/middleware/';
Expand All @@ -62,6 +64,7 @@ void main() {
var mockDirectedStateGraph = MockDirectedStateGraph();
var mockIntermediateState = MockIntermediateState();
var mockIntermediateVariation = MockIntermediateVariation();
var mockTree = MockTree();

setUp(() async {
/// Nodes set up
Expand All @@ -74,6 +77,7 @@ void main() {
// 2
when(node2.name).thenReturn('someElement/green');
when(node2.generator).thenReturn(mockPBGenerator);
when(node2.currentContext).thenReturn(mockContext);

/// IntermediateAuxiliaryData
when(mockIntermediateAuxiliaryData.stateGraph)
Expand All @@ -94,6 +98,7 @@ void main() {

/// Context
when(mockContext.project).thenReturn(mockProject);
when(mockContext.treeRoot).thenReturn(mockTree);

/// Project
when(mockProject.genProjectData).thenReturn(mockPBGenerationProjectData);
Expand Down
Loading

0 comments on commit 0641298

Please sign in to comment.