github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/pkg/service/output-text.go (about)

     1  package service
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/easysoft/zendata/internal/pkg/domain"
     7  	logUtils "github.com/easysoft/zendata/pkg/utils/log"
     8  	"github.com/easysoft/zendata/pkg/utils/vari"
     9  )
    10  
    11  func (s *OutputService) FindValuesByPath(path string, defFields domain.DefField) []interface{} {
    12  	if path == defFields.Path {
    13  		return defFields.Values
    14  	}
    15  	if len(defFields.Fields) == 0 {
    16  		return nil
    17  	}
    18  
    19  	for _, item := range defFields.Fields {
    20  		values := s.FindValuesByPath(path, item)
    21  		if values != nil {
    22  			return values
    23  		}
    24  	}
    25  	return nil
    26  }
    27  
    28  func (s *OutputService) GenText(returnedForYamlRefer bool) (lines []interface{}) {
    29  	simulatedFieldFromDef := domain.DefField{
    30  		Fields: vari.GlobalVars.DefData.Fields,
    31  		Join:   true,
    32  	}
    33  	s.CombineService.CombineChildrenIfNeeded(&simulatedFieldFromDef, true)
    34  
    35  	if !returnedForYamlRefer {
    36  		s.PrintHumanHeaderIfNeeded()
    37  	}
    38  
    39  	if vari.GlobalVars.ExportChildField != "" {
    40  		values := s.FindValuesByPath(vari.GlobalVars.ExportChildField, simulatedFieldFromDef)
    41  		for _, item := range values {
    42  			line := s.PlaceholderService.ReplacePlaceholder(item.(string))
    43  			if returnedForYamlRefer {
    44  				lines = append(lines, line)
    45  			} else {
    46  				logUtils.PrintLine(fmt.Sprintf("%v", line) + "\n")
    47  			}
    48  		}
    49  		return
    50  	}
    51  
    52  	for _, item := range simulatedFieldFromDef.Values {
    53  		line := s.PlaceholderService.ReplacePlaceholder(item.(string))
    54  
    55  		if returnedForYamlRefer {
    56  			lines = append(lines, line)
    57  		} else {
    58  			logUtils.PrintLine(fmt.Sprintf("%v", line) + "\n")
    59  		}
    60  	}
    61  
    62  	return
    63  }